首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决我的post控制器中的“无方法错误”。设计,专家,博客应用程序

如何解决我的post控制器中的“无方法错误”。设计,专家,博客应用程序
EN

Stack Overflow用户
提问于 2014-04-17 05:48:49
回答 2查看 937关注 0票数 0

试图为我的实践应用程序制定政策。在我的posts控制器中,我遇到了一个“无方法错误”。

如果我们把注意力集中在post控制器和我的更新方法上,这里是代码。

代码语言:javascript
复制
 def update
authorize @post
respond_to do |format|
if @post.update(post_params)

  format.html { redirect_to @post, notice: 'Post was successfully updated.' }
  format.json { head :no_content }
  #redirect_to @post

else
  render :edit
  format.html { render action: 'edit' }
  format.json { render json: @post.errors, status: :unprocessable_entity }
end
end

结束

你可以看到没有什么特别的。只是更新页面的HTML和JSON呈现。

authorize代码指向专家中查找访问策略的助手。

定义在我的Admin.rb模型中。

代码语言:javascript
复制
def editor?
    self.role == 'editor'
  end

authorize代码查找对应于方法名称的策略。它在策略类中查找,并开始应用这里找到的业务规则。问题就从这里开始。

我到了def update? @admin.editor? end

上面写着undefined method 'editor?' for #<Class:0x007ffb7fa4f6a0>

代码位于Git:https://github.com/wmuengineer/portfolio/tree/policy上的策略分支上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-18 03:19:55

学到的教训。正确地阅读文档。我需要用

代码语言:javascript
复制
def pundit_user
    current_admin
  end

而且起作用了。

票数 1
EN

Stack Overflow用户

发布于 2014-04-17 06:07:34

我不熟悉gem pundit,但是看一下代码,我可以假设您用错误的方式定义了pundit_user

根据文档,您可以自定义pundit_userUser.find_by_other_means。我认为这个方法应该返回一个User实例。您将pundit_user重新定义为Admin。我认为您应该返回类Admin的实例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23125523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档