Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将参数传递给控制器中的回调_Ruby On Rails_Callback - Fatal编程技术网

Ruby on rails 将参数传递给控制器中的回调

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

我在我的应用程序控制器中有这两种方法,我想要的是在我的项目中使用它们作为回调\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)
   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中?