我正试图在商店首页视图中获取出售的最新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) %>
什么是使我的第一个代码正常工作的正确语法?谢谢
答案 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
方法及其参数位于圆括号内,它不应破坏三元运算符的语法。