我需要在控制器中发布参数deal_id
。
我的观点 - > show.html.erb
<%= form_for([@deal, @contract], :url => pay_payments_path, html: { method: :post }) do |f| %>
<%= f.hidden_field :deal_id, value: @deal.id %>
<%= f.hidden_field :user_id, value: current_user.id %>
<%= f.submit "Send", :class => "btn btn-danger" %>
<% end %>
我的控制器 - &gt; payments_controller
def pay
@deal = Deal.find(params[:deal_id])
end
我在控制器中的代码不起作用,我得到了这个:
Couldn't find Acordo with 'id'=
我希望通过帖子发送@deal
根据deal_id
参数。
路线
resources :payments, only: [:index, :new, :create] do
collection do
post :pay
end
end
答案 0 :(得分:1)
如果您为params[:deal_id]
获取空值,则可能缺少将其添加到允许的参数中,这些参数可能不属于Payment
资源的默认字段:
def params
params.require(:payment).permit(:deal_id)
end
确保您的付款控制器上有params方法中的字段。
答案 1 :(得分:-1)
我不是Ruby专家,但也许这可以帮到你。 Accessing POST parameters