感谢先前的回答,我在视图中有以下代码。
<%= @miniature.contents.where(miniature_id: @miniature).map { |content| link_to content.miniset.name, content.miniset }.join(", ").html_safe %>
输出
`Minisetname, Minisetname, Minisetname`
我想在链接的(" x#{content.quantity}")
之后添加Minisetname
,以便它显示为
Minisetname (x3), Minisetname (x7), Minisetname (x4)
如果(" x#{content.quantity}")
不为空,我只希望它附加content.quantity
。
我在一个区块的其他地方这样做,但我无法弄清楚如何使用上面的数组。
答案 0 :(得分:1)
首先,假设您已经在模型中设置了关系,我真的不明白为什么您需要where
。
然后,我会将代码结构化为:
查看强>
<%= content_miniset_links_with_quantity(@miniature) %>
<强>辅助强>
def content_miniset_links_with_quantity(miniature)
miniature.contents.map{|content| content_miniset_link_with_quantity(content)}.join(', ').html_safe
end
def content_miniset_link_with_quantity(content)
string = link_to content.miniset.name, content.miniset
string << "(x#{content.quantity})" if content.quantity.present?
return string
end
答案 1 :(得分:0)
您只需将它们放在link_to
之后的字符串中link_to "#{content.miniset.name} #{content.quantity}", content.miniset }.join(", ").html_safe
请确保您没有标记不是html_safe
的内容。
编辑:让它显得很容易。
<ul class="items-list">
<% @miniature.contents.where(miniature_id: @miniature).map do |content| %>
<li class="item-holder">
<ul class="item-details">
<li class="item-link"><%= link_to content.miniset.name.html_safe, foobar_url(content.miniset.id) %>,</li>
<li class="item-quant">(x<%= content.quantity %>)</li>
</ul>
<li>,
<%end%>
</ul>
注意,你实际上并不需要div,或者做多行,但这只是更好的风格。哦,第二个div可能会更好地成为一个跨度,或者两个内部div可能会更好地作为跨度,但你明白了。
OH !!我只是看着你的情况。所以,这不太可能是必要的(除非内容是你写的一些奇怪的非显而易见的功能)。 @minature.contents
将自动加载内部联接关联。
好的,所以这里使用了连接。
<% @miniature.contents.where(miniature_id: @miniature).map do |content| %>
<%= link_to content.miniset.name, foobar_url(content.miniset.id) %> (x<%= content.quantity %>)
<% end.join(", ") %>
答案 2 :(得分:0)
首先,不要在视图中使用where
子句。这是一个糟糕的代码。并且,当你执行<%= =>
时,它实际输出任何东西。您正在使用返回map
的{{1}}函数。你应该以这种方式重新排列并完成你的工作。
array