Ruby on rails 渲染未将局部变量传递给部分模板?

Ruby on rails 渲染未将局部变量传递给部分模板?,ruby-on-rails,render,partial-views,Ruby On Rails,Render,Partial Views,在rails(2.3.5)中,我似乎无法将变量传递给我的部分模板。我的代码如下 在main view.html.erb文件中: <% f.fields_for :payments do |payment_form| %> <%= render 'payment', {:f => payment_form, :t => "test" } %> <% end %> <%= t %> 付款形式:t=>“测试”}%> 在_pay

在rails(2.3.5)中,我似乎无法将变量传递给我的部分模板。我的代码如下

在main view.html.erb文件中:

<% f.fields_for :payments do |payment_form| %>
    <%= render 'payment', {:f => payment_form, :t => "test" } %>
<% end %>
<%= t %>

付款形式:t=>“测试”}%>
在_payment.html.erb文件中:

<% f.fields_for :payments do |payment_form| %>
    <%= render 'payment', {:f => payment_form, :t => "test" } %>
<% end %>
<%= t %>

产生
错误数量的参数(0代表1)
错误。payment_form对象正在以f的形式传递给partial,没有任何问题。我尝试了上述语法的多种变体(例如,
:locals=>{:f=>payment\u form,:t=>“test”}
,但没有成功。我认为我犯了一些基本错误,但就是看不出来。

试试看

render :partial => 'payment', :locals => {:t => 'test'}
你试过了吗
付款形式%>


我不确定:t的作用是什么,但rails显然是在说,您应该只传入一个额外的参数,参数数目错误(0代表1)。这可能是因为t()是用于I18n的保留视图辅助方法。只需将其重命名为更具描述性的方法

您是否在其他地方渲染
付款
,而不将
:t
作为您本地人的一部分?啊,是的,我这样做了(尽管我不得不考虑一下是否)。这是一个嵌套形式的分部,我正在呈现,并且刚刚呈现。显然,这会呈现分部(尽管它在需要时隐藏在javascript中)。谢谢。为什么不输入一个答案,这样我就可以接受它并向您发送一些代表!不,不起作用。:partial=>“payment”只是说“payment”(从Rails 2.3开始)有很长的路要走而且:locals散列缺少:f=>payment_表单。不过感谢您查看我的问题。t只是在我传递我想要的实际变量(我还没有完全创建)之前测试表达式的一种方法。问题的评论中描述了实际的解决方案,感谢弗拉德·罗马斯坎努让我看得更近一些。事实上,我的表达没有任何问题,我只是在别处打了个电话,但没有意识到。不,不管我怎么称呼它,它仍然不起作用。