rails嵌套路由中的自定义操作

时间:2015-01-10 19:09:05

标签: ruby-on-rails

我的路线看起来如此:

  resources :contacts do
    resources :leads do
      get :process, on: :member
    end
  end

它生成以下帮助程序:

process_contact_lead_path   GET /contacts/:contact_id/leads/:id/process(.:format)   leads#process

现在当我尝试使用它时:

link_to "Process", process_contact_lead_path(@contact, @lead)

发生以下情况:

Started GET "/contacts/2/leads/2/process" for 127.0.0.1 at 2015-01-10 13:57:05 -0500

ArgumentError - wrong number of arguments (1 for 0):

我希望我的控制器操作看起来像这样:

  def process(arg)
    puts arg # => process
  end

因此Rails控制器期望一个参数,即字符串“process”。显然我做错了什么。 Process是要调用的操作,而不是传递给控制器​​操作的参数。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为问题是由方法名称冲突引起的。 processRendering的内部方法。最简单的方法是重命名路线中的动作或将其路由到不同的动作。

resources :contacts do
  resources :leads do
    get :process, on: :member, to: "leads#process_action"
  end
end