我有一个页面,其中列出了用户拥有的一堆贷款,我想在这些表格中找到一个表格标签,因为他们可以对列出的任何贷款进行付款。
这就是我所犯的错误“未定义方法'贷款'......”
<% @loans.each do |loan| %>
<% form_for loan add_payment_payment_path(loan) , :method => :post do |f| %>
<%= f.text_field :amount, :placeholder => 'Amount' %>
<%= f.submit 'Make Payment', :class => 'btn btn-primary'%>
<% end %>
<% end %>
如何在@loans.each
循环中拥有动态form_for?
答案 0 :(得分:4)
你form_for
来电不正确,应该是:
<% form_for loan, url: add_payment_payment_path(loan), method: :post do |f| %>
您在loan
之后错过了逗号,因此它被解释为以add_payment_payment_path(loan)
为参数的方法。
另请注意,将网址传递给form_for
是通过选项哈希使用:url
密钥完成的。它不是一个单独的参数,因此传递它会导致wrong number of arguments (3 for 2)
错误。
答案 1 :(得分:1)
form_for方法中有两个语法错误。您在贷款后遗失了一个逗号,并且在add_payment_payment_path(贷款)之后您还有一个额外的空格
<% form_for loan add_payment_payment_path(loan) , :method => :post do |f| %>
将此更改为
<% form_for loan, add_payment_payment_path(loan), :method => :post do |f| %>
在大多数情况下,在Ruby括号中记住是可选的,但是,您必须只保留一个空格。这是带括号
的form_for方法<% form_for(loan, add_payment_payment_path(loan), :method => :post) do |f| %>