没有路由发现表单问题

时间:2014-11-21 21:58:13

标签: ruby-on-rails forms

我有一个商家列表页面,每个展示页面都有一个表单。由于这个设置,这意味着我需要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|%>

知道这里有什么问题吗?

2 个答案:

答案 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来创建它们。