rails 2.3 button_to,表格和路线

时间:2013-06-05 16:45:32

标签: ruby-on-rails ruby-on-rails-3.2

我正在尝试在一个类中创建一个按钮,将用户发送到表单以创建另一个类。这是最简单的has_many / belongs_to关系,但我很困惑。

两个类:事件和影响。事件has_many影响。

创建一个从Events :: Show to Impacts :: New的链接很简单:

<%= link_to "Add impact", new_impact_path(event_id: @event.id) %> 

生成:

<a href="/impacts/new?event_id=5">Add impact</a> 

这会向impact控制器发送一个请求,并使用params调用new()方法[:event_id] = 5

但是我无法通过button_to

了解如何执行此操作

方法#1 在不改变任何路线的情况下,我认为这是正确的。它使用params [:event_id]调用Impacts :: New。

<%= button_to "New -loses ID", options = {:controller => "impacts", :action => "new", :event_id => @event.id }, html_options={:method => "get" }   %> 

生成

<form action="/impacts/new?event_id=5" class="button_to" method="get"><div><input type="submit" value="New -loses ID"></div></form> 

routes.rb显示:

new_impact GET    /impacts/new(.:format)      impacts#new 

但是当Impacts :: New执行时,没有传递参数。它调用了正确的方法,但是param以某种方式被条带化(我不知道为什么/在哪里)。

方法#2 当我改变我的路线时.rb:

resources :events do 
   resources :impacts 
end 

routes.rb现在显示:

new_event_impact GET    /events/:event_id/impacts/new(.:format)      impacts#new 

生成的代码完全不同但它有效。

<form action="/events/5/impacts/new" class="button_to" method="get"><div><input type="submit" value="New -loses ID"></div></form> 

所以我的问题:

方法#1为什么会丢失参数?

为什么#2方法有效?

我怀疑答案是我不了解路线:)

感谢

0 个答案:

没有答案