通过rails路径传递模型id

时间:2013-11-17 18:59:27

标签: ruby-on-rails routes simple-form

我正在使用simple_form调用自定义操作。我在将:id参数传递给操作时遇到了问题。

路由

post '/posts/:id/admin_vote' => 'posts#admin_vote', as: 'admin_vote'

形式

<%= simple_form_for :post, url: admin_vote_path(:post_id), :html => {:class => 'form-inline admin-vote-form'} do |f| %>
  <%= f.select :vote, 1..20 %>
  <%= f.submit 'Vote', :class => 'btn btn-primary btn-xs' %>
<% end %>

部分渲染

<%= render 'layouts/admin_vote', :locals => { :post => post, :post_id => post.id } %>

由于某种原因,操作会收到params[:id] = 'post_id'而不是实际ID。

2 个答案:

答案 0 :(得分:1)

您向:post_id提供了admin_vote_path符号,因此它会使用该符号。将其更改为:

admin_vote_path(params[:post_id])

或其他参数,具体取决于表单的上下文。

答案 1 :(得分:0)

在我看来,你的表格应该是

<%= simple_form_for post, url: admin_vote_path, :html => {:class => 'form-inline admin-vote-form'} do |f| %>
  <%= f.select :vote, 1..20 %>
  <%= f.submit 'Vote', :class => 'btn btn-primary btn-xs' %>
<% end %>

您应该根据变量post

构建表单