我目前正在学习红宝石,但我不能让我的嵌入式红宝石进行探索性工作,我们将不胜感激。
我基本上试图在嵌入式ruby中编写if语句的简短版本
<% entity.attributes.each do |key, value| %>
<%= if key == "name"
link_to @entity, edit_entity_path(entity)
else
value
end %>
<%= end %>
根据我的理解(以及post),它应该能够像这样写出来
<% entity.attributes.each do |key, value| %>
<%= key == "name" ? link_to @entity, edit_entity_path(entity) : value %>
<%= end %>
这似乎不起作用。我做错了什么?
Ralils错误消息: 语法错误,意外的tIVAR,期待 keyword_do或&#39; {&#39;或者&#39;(&#39; ... ey ==&#34; name&#34;)? ...
请事先提供帮助
答案 0 :(得分:5)
有一个link_to_if帮助器,它会将您的代码重构为:
<% entity.attributes.each do |key, value| %>
<%= link_to_if key == "name", value, edit_entity_path(entity) %>
<% end %>
答案 1 :(得分:3)
您必须将参数包装在括号中的link_to
:
<%= key == "name" ? link_to(@entity, edit_entity_path(entity)) : value %>