1

我有一个页面,我在其中列出了用户拥有的一堆贷款,并且我希望在每个表单周围都有一个表单标签,因为他们可以对列出的任何贷款进行付款。

这就是我所拥有的抛出错误“未定义的方法'贷款'......”

<% @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 ?

4

2 回答 2

4

你的form_for电话不正确,应该是:

<% form_for loan, url: add_payment_payment_path(loan), method: :post do |f| %>

您在 之后缺少逗号loan,因此它被解释为带有add_payment_payment_path(loan)参数的方法。

另请注意,传递 urlform_for是通过选项散列完成的,使用:url密钥。它不是一个单独的参数,这样传递它会给你一个wrong number of arguments (3 for 2)错误。

于 2013-05-17T06:07:43.227 回答
1

您的 form_for 方法中有两个语法错误。您在贷款后缺少一个逗号,并且您在 add_payment_payment_path(loan) 之后还有一个额外的空间

<% 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| %>
于 2013-05-17T06:23:08.013 回答