【问题标题】:Partial passing variable error部分传递变量错误
【发布时间】:2014-05-25 09:30:17
【问题描述】:

我有一个 rails 4 应用程序,其中包含如下代码:

<% @store.products.each_with_index do |p, i| %>
   <%= render "product_fields", locals: {product:p, index: i} %>
<% end %>

product_fields 部分看起来像:

//LOTS OF HTML CODE HERE
<% if params[:action] == "edit" %>
   <%= render "edit_product_fields", locals: {p: product, i: index } %>
<% end %>

但出现错误(在 _product_fields.html.erb 上):

NameError in Products#edit
undefined local variable or method `p' for #<#<Class:0x00000101e35da8>:0x00000101a86568>

怎么了?另外,我想知道是否有一种更简洁的方法可以将变量传递给局部变量中的局部变量?我尝试做类似locals: {w:w} 的事情(这样变量的命名就会一致,但它似乎也不起作用。

【问题讨论】:

  • 你能发布完整的错误和完整的product_fields部分吗?
  • @JKen13579,当然刚刚发布

标签: ruby-on-rails ruby partials


【解决方案1】:

在 rails 3+ 中,您不需要提供本地选项。直接传递变量即可。

<%= render 'product_fields', product: p, index: i %>

【讨论】:

    【解决方案2】:

    你应该在你的渲染中添加partial关键字,否则本地将不起作用。

    <%= render partial: "product_fields", locals: { product: p, index: i } %>
    
    <%= render partial: "edit_product_fields", locals: { p: product, i: index } %>
    

    【讨论】:

    • 感谢您的回复,但它并没有改变错误?
    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2013-01-16
    • 2011-06-09
    相关资源
    最近更新 更多