0

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

我基本上是在尝试在我的嵌入式 ruby​​ 中编写这个 if 语句的简短版本

<% entity.attributes.each do |key, value| %>
  <%= if key == "name"
        link_to @entity, edit_entity_path(entity)
      else 
        value
      end %>
<%= end %>

根据我的理解(和这篇文章)应该可以这样写

<% entity.attributes.each do |key, value| %>
  <%= key == "name" ? link_to @entity, edit_entity_path(entity) : value %>
<%= end %>

这似乎不起作用。我究竟做错了什么?

Rails 错误消息: 语法错误,意外的 tIVAR,期望 keyword_do 或 '{' 或 '(' ...ey == "name") ?...

提前谢谢您的帮助

4

2 回答 2

5

有一个link_to_if帮助器,它将您的代码重构为:

<% entity.attributes.each do |key, value| %>
  <%= link_to_if key == "name", value, edit_entity_path(entity) %>
<% end %>
于 2017-07-26T08:27:39.010 回答
3

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

<%= key == "name" ? link_to(@entity, edit_entity_path(entity)) : value %>
于 2017-07-26T08:22:55.203 回答