Rails link_to或button_to发布带参数的请求

我有一个宁静的(脚手架生成的)控制器和投票模型,我只是试图在视图中添加一个字段,当点击时,将为给定的汽车创建一个新的投票。 它需要是一个POST,我应该在rails中执行此操作的方式是什么?

   "votes", :action => "create"}, :car_id => car.id, :user_id=> session[:user_id] , :method=>:post %>      

 <%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , :method=>:post %> 

这将使VotesController创建动作中的params [:car_id]和params [:user_id]可用。

Rails 5 + haml,例如:

 = button_to "smth", some_path, method: :get, params: { start_point: 3.month.ago } 

关键是使用params键,然后在控制器中你将能够通过@some_var = params [:start_point]获得价值

 <%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , {:method=>:post} %> 

Erez是对的 – 在这种情况下,第一个哈希是“URL parameters”哈希,它控制按钮发送请求的URL。 第二个哈希是“HTML参数”哈希,它控制按钮的外观,以及提交方法(通过在生成的HTML中添加隐藏字段)。

这里令人困惑的是,URL参数要求您以控制器为中心的方式指定控制器和操作,但是然后要求您传递URL的ID,这更加以URL为中心。 那个组合让我离开了很长时间。 您可以在URL参数哈希中添加您喜欢的任何其他参数 – 顺便使用 – 作为控制器中其他方法的参数,以采取更高级的操作。