我的路线看起来如此:
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是要调用的操作,而不是传递给控制器操作的参数。
我该如何解决这个问题?
答案 0 :(得分:1)
我认为问题是由方法名称冲突引起的。 process是Rendering
的内部方法。最简单的方法是重命名路线中的动作或将其路由到不同的动作。
resources :contacts do
resources :leads do
get :process, on: :member, to: "leads#process_action"
end
end