0

投票を作成するボタンまたはリンクを作成しようとしています。投稿を使用する必要があるため、button_to を使用しています。現在のコードは、ボタン要素自体に :song と :user_id を追加するだけなので、そうではありません働いている、私は何が間違っているのですか?

<% @songs.each do |song| %>
  <tr>
    <td class="plusvote"><%= button_to '+', {:controller => "votes", :action => "create"}, :song => song.id, :user=> session[:user_id] , :method=>:post  %></td>
    <td><%= song.votes.count %></td>
    <td><%= song.name %></td>
    <td><%= song.code %></td>
    <td><%= song.album %></td>
<% end %>

エラーはありません。生成された html が次のようになっているため、押された/送信されたボタン/フォームは正しく投稿されません。

<form action="/votes" class="button_to" method="post">
    <div>
        <input song="5" type="submit" user="1" value="+" />
        <input name="authenticity_token" type="hidden" value="tucB4fQ4XbrnzF3lFcQnMq/1rSaPrcsc/tFJ1SQttns=" />
    </div>
</form>
4

2 に答える 2

0

これを行う最も簡単な方法は、Rails のクラシックform_forヘルパーを使用することですがhidden、各属性に対して入力タイプを に設定します。また、各入力のデフォルト値を設定する必要があります(私が見る限り、 - は 1 つしかありません:song)。そして、button_to を通常の送信ボタンに変更します。

于 2012-09-09T11:08:20.340 に答える
0

:song と :user_id の値を URL ハッシュの外に置いただけのように見えます。ボタンをこれに置き換えてみてください:

<%= button_to '+', {:controller => "votes", :action => "create", :song => song.id, :user=> session[:user_id]}, :method=>:post  %>
于 2012-09-09T13:55:22.380 に答える