【问题标题】:locals in rails partial当地人在 Rails 部分
【发布时间】:2014-04-20 10:14:11
【问题描述】:

我有这个部分:

<% if flash.any? %>
  <% flash.each do |type, message| %>
    <%= render 'shared/flash_message', locals: { type: type, message: message } %>
  <% end %>
<% end %>

其中包括这个部分:

<div class="message-box message-box--<%= type %>">
  <a class="close" data-dismiss="alert">×</a>
  <%= message %>
</div>

运行时我得到:

未定义的局部变量或方法“类型”

它指向我输出的错误 有人知道为什么吗?

【问题讨论】:

  • 我需要将类型作为类名的一部分。不满足于 div 内。即便如此,将 type 的输出移动到 div 中只是为了查看它是否在那里工作也失败了。

标签: ruby-on-rails partial locals


【解决方案1】:

您必须指定要渲染局部变量以传递局部变量。

所以改变

<%= render 'shared/flash_message', locals: { type: type, message: message } %>

<%= render partial: 'shared/flash_message', locals: { type: type, message: message } %>.

http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

【讨论】:

    【解决方案2】:

    试试这个:

    <% if flash.any? %>
     <% flash.each do |type, message| %>
     <%= render :partial=>'shared/flash_message', locals: { type: type, message: message } %>
     <% end %>
    <% end %>
    

    【讨论】:

      【解决方案3】:

      实际上,如果您没有传递任何其他选项,您可以不使用:partial 进行部分渲染。即,要注意的一点是,在传递诸如:layout:locals 等附加选项时,需要显式指定:partial。 所以,应该是,

      <% if flash.any? %>
        <% flash.each do |type, message| %>
          <%= render partial: "shared/flash_message", locals: { type: type, message: message } %>
        <% end %>
      <% end %>
      

      参考:Using Partials

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多