2011-11-10 50 views
1

我收到此错误: 没有路由匹配{:action =>“new_goal”,:method =>“get”,:controller =>“home”}Rails:即使在定义动作和控制器时也没有路由匹配

<%= form_tag(:action =>"new_goal", :method => "get") do %> 
    <%= select_tag "deadline-type", "<option>before I turn</option><option>before</option>".html_safe%> 
    <%= submit_tag "Let's do this!", :name => nil, :class => "radius black button" %>  
<% end %> 

我在routes.rb中指定为资源的家庭控制器

resources :home, :controller => "home" 

更新:当我把它改成这样它的工作原理,但我还是不明白,为什么以前的做法没有工作 -

<%= form_tag("/new_goal", :method => "get") do %> 

,并将此路线:

match '/new_goal', :controller => 'home', :action => 'new_goal' 
+0

在命令行尝试使用'rake routes'来查看所有的路由,它们与哪个控制器相关联,期望它们的路径是什么等。 –

回答

1

有一个在你的路由不采取行动new_goal,考虑到资源只定义指数,显示创建,更新和删除。如果使用的是轨道3

resources :home, :controller => "home" do 
    get :new_goal 
end 

在轨道2

resources :home, :controller => "home", :member => { :new_goal => :get} 
+0

我尝试了两种方法,但我仍然得到相同的错误 –

+0

你重新启动了应用程序?变化:成员:收集在第二个例子中 –

+0

是的,我每次重新启动它,我试过你建议的3个选项后(INCD:集合),但我还是看到了同样的错误 –

0

你的论点form_tag的情况下是不明确的,因为你不关闭哈希。

<%= form_tag({ :action =>"new_goal" }, :method => "get") do %> 

Rails试图使用method作为URL查找的参数。

+0

改变了错误的:没有路线匹配{:action =>“new_goal”,:controller =>“home”} –

+0

定义的路由在哪里?您可能需要将我的答案与@ Fernando的答案结合起来。虽然'#new_goal'确实驻留在'HomeController'内部,而不是'GoalsController'内? – d11wtq

+0

#new_goal在HomeController中。我将其改为<%=的form_tag( “/ new_goal”:方法=> “GET”)做%>和将此添加到路线:匹配 '/ new_goal',:控制器=> '家',:动作=>' new_goal”。这工作 –

相关问题