我正在使用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。
答案 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