具有嵌套资源的参数

时间:2015-12-14 14:32:00

标签: ruby-on-rails ruby-on-rails-4

我正在尝试将params分配给我的控制器中的变量,以用于嵌套资源的变量。

Controller for Transactions:
def create
  @amount = params[:amount] 
  [...]
end


Routes:
resources :accounts do
  resources :transactions
end

View for New Transaction:
<%= form_for([@account, @account.transactions.build]) do |f| %>
  [...]
  <%= f.label :amount %>
  <%= f.text_field :amount %>
  [...]
  <%= f.submit %>
<% end %> 

出于某种原因返回nil。行@amount = params[:amount]是否仅适用于没有嵌套资源的行?或者我错过了其他什么?

2 个答案:

答案 0 :(得分:1)

你确定params [:amount]确实存在吗?检查create方法中params变量的内容,以查看传递给方法的数据。通常在params中,字段值如:您的案例中的金额由模型名称封装,您必须编写参考,例如params [:account] [:amount]才能访问它。

答案 1 :(得分:0)

@amount是控制器中的一个实例变量(以同一名称传递给视图)。

它与您的帐户实例中的金额方法不同(它返回您模型中的金额属性)