嵌入式 Ruby:短 If 语句

Emebedded Ruby: Short If Statement

我目前正在学习 ruby,但我无法让我的嵌入式 ruby 正常工作,我们将不胜感激。

我基本上是想在我的嵌入式 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 Error Message: syntax error, unexpected tIVAR, expecting keyword_do or '{' or '(' ...ey == "name") ? ...

提前感谢您的帮助

您必须将 link_to 的参数括在括号中:

<%= key == "name" ? link_to(@entity, edit_entity_path(entity)) : value %>

有一个 link_to_if 助手,可以将您的代码重构为:

<% entity.attributes.each do |key, value| %>
  <%= link_to_if key == "name", value, edit_entity_path(entity) %>
<% end %>