Ruby on rails 将参数传递给控制器中的回调
我在我的应用程序控制器中有这两种方法,我想要的是在我的项目中使用它们作为回调\u控制器,就像这样,但它给了我错误,有人能告诉我如何解决这个问题吗Ruby on rails 将参数传递给控制器中的回调,ruby-on-rails,callback,Ruby On Rails,Callback,我在我的应用程序控制器中有这两种方法,我想要的是在我的项目中使用它们作为回调\u控制器,就像这样,但它给了我错误,有人能告诉我如何解决这个问题吗 before_action :permit_show(@project), only:[:show] before_action :permit_edit(@project), only:[:edit] def permit_edit(object) if (current_user.id != object.creator_id) r
before_action :permit_show(@project), only:[:show]
before_action :permit_edit(@project), only:[:edit]
def permit_edit(object)
if (current_user.id != object.creator_id)
render_404
end
end
def permit_show(object)
members = object.users
if (!members.include? current_user)
render_404
end
end
要传入参数,必须使用块
before_filter(only: [:show]) { permit_show(@project) }
before_filter(only: [:edit]) { permit_edit(@project) }
您可以使用send方法传递如下参数-
before_action only: [:show] do |c|
c.send(:permit_show, @project)
end
before_action only: [:edit] do |c|
c.send(:permit_edit, @project)
end
归功于
…您可以通过使用可选的方法参数来实现所需的功能,如下所示:
def cache_bust(callback = true)
... method body
end
在从after_update回调调用该方法的场景中,不传递参数,但默认为true。否则,如果该方法是从其他任何地方“手动”调用的,您可以选择将任何值传递给该方法。在这种情况下,您不需要发送,只需
permit\u edit(@project)
也可以。是否有办法在跳过该回调之前将该块传递到skip\u中?