Emebedded Ruby:Short If Statement

时间:2017-07-26 08:18:44

标签: ruby-on-rails if-statement embedded-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错误消息:   语法错误,意外的tIVAR,期待   keyword_do或&#39; {&#39;或者&#39;(&#39; ... ey ==&#34; name&#34;)? ...

请事先提供帮助

2 个答案:

答案 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 %>