button_to用params提交帖子来创建记录

时间:2012-09-09 10:57:23

标签: ruby-on-rails

我正在尝试创建投票的按钮或链接,我收集我必须使用帖子,所以我使用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>

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用rails classic form_for helper,但为每个属性设置输入类型为hidden。此外,您还需要为每个输入设置默认值(据我所知,只有一个 - :song)。然后将button_to更改为常规提交按钮。

答案 1 :(得分:0)

在我看来,你只需要将:song和:user_id值放在url hash之外。尝试用以下代码替换按钮:

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