我有一个宁静的(脚手架生成的)控制器和投票模型,我只是想在视图中添加一个字段,点击后,将为给定的汽车创建一个新的投票。它需要是一个POST,我应该在rails中执行此操作的方式是什么?
<% @cars.each do |car| %>
<tr>
<td><%= button_to '+', {:controller => "votes", :action => "create"}, :car_id => car.id, :user_id=> session[:user_id] , :method=>:post %></td>
<td><%= car.votes.count %></td>
<td><%= car.name %></td>
<td><%= car.code %></td>
<td><%= car.album %></td>
<% end %>
答案 0 :(得分:30)
<td><%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , :method=>:post %></td>
这将使VotesController创建动作中的params [:car_id]和params [:user_id]可用。
答案 1 :(得分:23)
Rails 5 + haml,例如:
<?php $samples=$data['options'][0][product_option_value];
$product_image = array_column($samples, 'product_image');
echo'<pre>'; print_r($product_image );
?>
关键是使用 params 键,然后在控制器中你可以通过 @some_var = params [:start_point]
获得价值答案 2 :(得分:0)
<td><%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , {:method=>:post} %></td>
Erez是对的 - 在这种情况下,第一个哈希是“URL参数”哈希,它控制按钮发送请求的URL。第二个哈希是“HTML参数”哈希,它控制按钮的外观,以及提交方法(通过在生成的HTML中添加隐藏字段)。
这里令人困惑的是,URL参数要求您以控制器为中心的方式指定控制器和操作,但是然后要求您传递URL的ID,这更加以URL为中心。这种组合让我失望了很长时间。您可以在URL参数哈希中添加您喜欢的任何其他参数 - 用作控制器中其他方法的参数,以采取更高级的操作。
答案 3 :(得分:0)
您也可以像这样将参数作为参数传递给路径帮助器
<%= button_to '+', votes_path(car_id: card.id), method: 'post' %>
您可以从控制器中获取会话ID,也可以根据需要将其传递给路径助手。