我有一个商家列表页面,每个展示页面都有一个表单。由于这个设置,这意味着我需要2个不同的新/创建动作。我尝试使用以下代码定义它:
<%= form_for @lead, :url => { :action => :leadcreate } do |lead|%>
然而,这不起作用。在我的路线文件中,我也有资源要求列表,并且由于引线包含在列表控制器中,我希望这可以覆盖它,但显然不是。
然后我得到错误:
No route matches {:action=>"leadcreate", :controller=>"listings", :id=>"1"
开启
<%= form_for @lead, :url => { :action => :leadcreate } do |lead|%>
知道这里有什么问题吗?
答案 0 :(得分:0)
这个:leadcreate
行动的控制器是什么?您必须将控制器的名称作为参数传递给:url
助手
应该是:<%= form_for @lead, url: {controller: 'controller_name', action: :leadcreate } do |lead|%>
另一种选择是使用生成的路线:
<%= form_for @lead,listings_lead_path do |lead|%>
或在终端
rake routes
时调用的路径
答案 1 :(得分:0)
你可能想要这样的东西。
resources :listings do
member do
post :leadcreate
end
end
这将使您leadcreate_listing_path
在您的表单中使用。
但是如果潜在客户总是在列出的范围内,则可以使用嵌套资源。
resources :listings do
resources: :leads
end
然后创建一个引导控制器来处理它们。网上有很多关于如何执行此操作的信息,然后您可以使用标准的restful actions / crud来创建它们。