【问题标题】:How to pass parameter from one render to another to load specific content in template如何将参数从一个渲染器传递到另一个渲染器以在模板中加载特定内容
【发布时间】:2015-09-17 13:48:13
【问题描述】:

我在一个 ruby​​ on rails 项目中工作,但由于我是一名前端开发人员,所以我对 ruby​​ on rails 的处理方式一无所知。

我面临的问题是我想将一个参数传递给另一个文件,然后我可以使用它来加载特定内容,但我不确定如何执行此操作,或者是否可能。

file 1:

<%= render "partials/lightbox/lightbox", card: 'new-card' %>

那我要在file 2 中使用这个参数:

<div class="site-overlay">
  <div class="lightbox lightbox--medium light-theme">
    <%= render "partials/lightbox/content/{myparameter}" %>
  </div>
</div>

这将使用我从file 1 传递的内容呈现灯箱。

如何将变量从file 1 传递给file 2 中的render

【问题讨论】:

    标签: html ruby-on-rails ruby


    【解决方案1】:

    在 Rails 中,locals 用于传递变量

    <%= render "partial_name", :locals => { :variable_name => variable} %>
    

    您可以将其更改为您自己的数据。希望这对你有用。

    【讨论】:

      【解决方案2】:

      很简单

      <%= render partial: 'path/to/partial/file2', locals: {var2: var1} %>
      

      上面的代码会将var1从partial file1传递给partial file2,并且可以在file2 partial中作为var2

      访问

      记住,partials 被命名为 _filename,但是在使用渲染时,你写的时候不带下划线。

      希望对你有帮助

      【讨论】:

      • 我将如何将它传递给文件 2 中的渲染? #{myVar}?
      • 上面的代码已经将变量传递给部分file2,一旦在file2中你可以输出像这样的变量,如果你想做字符串连接
      【解决方案3】:

      你应该考虑使用部分:

      在 index.html.erb 中

      <h1>New zone</h1>
      <%= render partial: "lightbox", locals: {zone: @zone} %>
      

      在同一目录中,您应该使用文件“_lightbox.html.erb” 在这个文件中,你可以渲染另一个部分:

      <h2>Inside new zone</h2>
      <%= render partial: "lightbox2", locals: {var: zone} %>
      

      【讨论】:

        【解决方案4】:

        因为 rails4 你可以省略 partiallocals

        <%= render 'path/to/partial/file2', var2: var1 %>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-15
          • 1970-01-01
          • 2015-08-04
          相关资源
          最近更新 更多