如何在控制器中获取post参数

时间:2016-08-27 23:54:26

标签: ruby-on-rails

我需要在控制器中发布参数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

2 个答案:

答案 0 :(得分:1)

如果您为params[:deal_id]获取空值,则可能缺少将其添加到允许的参数中,这些参数可能不属于Payment资源的默认字段:

def params
  params.require(:payment).permit(:deal_id)
end

确保您的付款控制器上有params方法中的字段。

答案 1 :(得分:-1)

我不是Ruby专家,但也许这可以帮到你。 Accessing POST parameters