30

私は投票用の安らかな(足場で生成された)コントローラーとモデルを持っています。クリックすると、特定の車の新しい投票を作成するフィールドをビューに追加しようとしています。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 %>
4

4 に答える 4

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

これにより、VotesControllercreateアクションでparams[:car_id]とparams [:user_id]が使用可能になります。

于 2012-09-10T23:02:42.733 に答える
31

Rails 5 + haml、例:

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

重要なのはparamsキーを使用することです。そうすれば、コントローラーで@some_var = params [:start_point]を介して値を取得できるようになります。

于 2016-10-10T06:42:26.607 に答える
1
<td><%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , {:method=>:post}  %></td>

Erezは正しいです。この場合の最初のハッシュは「URLパラメータ」ハッシュであり、ボタンがリクエストを送信するURLを制御します。2番目のハッシュは「HTMLパラメータ」ハッシュです。これは、ボタンの外観と、送信メソッド(生成されたHTMLに非表示フィールドを追加することによる)を制御します。

ここで紛らわしいのは、URLパラメーターがコントローラーとアクションをコントローラー中心の方法で指定するように要求することですが、URLのIDを渡す必要があります。これはよりURL中心です。その組み合わせは私を長い間投げ捨てました。ちなみに、URLパラメータハッシュに好きなパラメータを追加して、コントローラの他のメソッドの引数として使用し、より高度なアクションを実行できます。

于 2014-04-03T13:20:57.950 に答える
0

次のように、パラメータを引数としてパスヘルパーに渡すこともできます。

<%= button_to '+', votes_path(car_id: card.id), method: 'post'  %>

必要に応じて、コントローラーからセッションIDをフェッチすることも、パスヘルパーに渡すこともできます。

于 2020-10-21T11:57:23.067 に答える