具有三元运算符条件的具有Link_to帮助程序的Image_tag

时间:2018-10-10 15:10:28

标签: ruby-on-rails ruby

我正试图在商店首页视图中获取出售的最新3种产品的样本,并使它们可单击以将用户重定向到其相互显示的页面。 这是控制器:

  def home
  @productsample = Product.where(:ordinable => true).last(3).shuffle
  end

这是我的观点:

<h2>Latest product on sell!</h2>
<% @productsample.each do |x| %>
<div>
  <%= x.picture? ? link_to image_tag(x.picture_url, :alt => x.name), product_path(x) : image_tag("https://via.placeholder.com/250x250") %>
</div>

由于某种原因,我不明白我不断收到此sintax错误:

/home/luis/code/levisn1/development/ezmarkt/app/views/pages/home.html.erb:9: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '(' x.picture? ? link_to image_tag(x.picture_url, :alt => x.name ^ /home/luis/code/levisn1/development/ezmarkt/app/views/pages/home.html.erb:9: syntax error, unexpected ',', expecting ')' .picture_url, :alt => x.name), root_path : image_tag("https: ^

与此代码相反,它当然可以完美地工作:

<%= link_to image_tag(x.picture_url), product_path(x) %>

什么是使我的第一个代码正常工作的正确语法?谢谢

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用三元运算符来决定要显示的内容。试试:

  <%= x.picture? ? (link_to image_tag(x.picture_url, :alt => x.name), root_path) : image_tag("https://via.placeholder.com/250x250") %>

我认为link_to方法的参数之间的逗号引发语法错误,因此,现在link_to方法及其参数位于圆括号内,它不应破坏三元运算符的语法。