Rails 部分中的 :object 有哪些方法可用?

发布于 2024-10-09 05:51:10 字数 722 浏览 4 评论 0原文

我正在尝试构建我的部分并减少重复,但我遇到了问题。以下工作正常:

在视图中:

<%= render 'valve' %>

部分:

<% if @valve.length > 1 %>
<h3>Valve kit</h3>
<%= render 'not_enough' %>
<% else if @valve.length < 1 %>
  <h3>Valve kit</h3>

我将有很多套件,因此我不想对每个套件变量重复此操作,而是想做这样的事情:

<%= render :partial => 'valve', :object => @valve %>

<% if valve.length > 1 %>
<h3>Valve kit</h3>
<%= render 'not_enough' %>
<% else if valve.length < 1 %>
  <h3>Valve kit</h3>

但这会破坏 Valve.length 方法。那么,当我将 @valve 作为 :object 传递时发生了什么变化?我可以使用另一种方法作为替代来完成部分中的相同功能吗?

I am trying to build my partials and repeat less, but I am having a problem. The following works just fine:

In view:

<%= render 'valve' %>

In partial:

<% if @valve.length > 1 %>
<h3>Valve kit</h3>
<%= render 'not_enough' %>
<% else if @valve.length < 1 %>
  <h3>Valve kit</h3>

I am going to have many kits, so rather than repeating this for every kit variable, I would like to do something like this:

<%= render :partial => 'valve', :object => @valve %>

<% if valve.length > 1 %>
<h3>Valve kit</h3>
<%= render 'not_enough' %>
<% else if valve.length < 1 %>
  <h3>Valve kit</h3>

But that breaks the valve.length method. So, what is changing when I pass @valve as the :object? Is there another method I can use as a substitute to accomplish the same functionality in the partial?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

━╋う一瞬間旳綻放 2024-10-16 05:51:10

您需要将 :locals 哈希传递给部分

<%= render :partial => 'valve', :locals => {:valve => @valve } %>

然后在您的视图中使用 Valve.* 就像您所拥有的那样。尽可能避免在局部变量中使用实例变量。

You need to pass a :locals hash to the partial

<%= render :partial => 'valve', :locals => {:valve => @valve } %>

Then use valve.* in your view like you have. Try to avoid using instance variables in partials when possible.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文