Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails实例变量联接_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails实例变量联接

Ruby on rails Rails实例变量联接,ruby-on-rails,Ruby On Rails,这很简单,但我已经很久没有需要它了。 我有以下代码 <% @miniature.minisets.each do |miniset| %> <%= link_to miniset.name, miniset %> <% end %> 它输出Minisetname Minisetname Minisetname等 我希望它输出带有逗号的Minisetname、Minisetname、Minisetname 我试图包含.join(“,”,但找不到放置它

这很简单,但我已经很久没有需要它了。 我有以下代码

<% @miniature.minisets.each do |miniset| %>
   <%= link_to miniset.name, miniset %>
<% end %>

它输出
Minisetname Minisetname Minisetname

我希望它输出带有逗号的
Minisetname、Minisetname、Minisetname

我试图包含
.join(“,”
,但找不到放置它的正确位置。我是否还需要使用
.map
而不是
.each


耻辱。

这里有一种方法应该有效:

<%= @miniature.minisets.map { |miniset| link_to miniset.name, miniset }.join(", ").html_safe %>

这里有一种应该有效的方法:

<%= @miniature.minisets.map { |miniset| link_to miniset.name, miniset }.join(", ").html_safe %>


这将返回转义链接。您需要在末尾添加
.html\u safe
(有多种方法可以设置不应转义的字符串)。请注意,我还没有对此进行测试。由于
Array#join
的工作方式,您可能还必须显式地将结果标记为HTML安全:这代替了使用
each do
,因此不需要
end
标记,对吗?出于某种原因,它正在破坏并显示html。它不需要结束标记。问题是我后来想到的(Lukas也提到过):HTML安全属性在连接过程中被删除。由于到输出的
link\u应该已经被消毒,因此在这种情况下,只需添加
.html\u safe
就足够了。链接文章更全面地讨论了这个问题。这将返回转义链接。您需要在末尾添加
.html\u safe
(有多种方法可以设置不应转义的字符串)。请注意,我还没有对此进行测试。由于
Array#join
的工作方式,您可能还必须显式地将结果标记为HTML安全:这代替了使用
each do
,因此不需要
end
标记,对吗?出于某种原因,它正在破坏并显示html。它不需要结束标记。问题是我后来想到的(Lukas也提到过):HTML安全属性在连接过程中被删除。由于到
输出的
link\u应该已经被消毒,因此在这种情况下,只需添加
.html\u safe
就足够了。链接文章更全面地讨论了这个问题。