在Rails视图中,我有一个条件link_to
标记-即,该URL仅在某些条件下有效。
<% if url_is_valid? %>
<%= link_to my_conditional_url do %>
"Valid link"
<% end %>
<% end %>
在开发和测试环境中,在url_is_valid?
返回false的情况下,此视图突然开始引发错误。
该错误类似于unexpected do, expected end
类型错误。我知道是什么导致了错误-这是因为my_conditional_url
为nil时,Rails试图解释link_to块。我不明白的是为什么Rails运行此代码。
换句话说:
# option1 renders without error
<% if false %>
<%= link_to "http://valid.url" do %>
"Valid link"
<% end %>
<% end %>
# option2 raises an error because the link_to block is malformed
<% if false %>
<%= link_to nil do %>
"Valid link"
<% end %>
<% end %>
# option3 renders without error
<% if false %>
<%= link_to "Valid link", nil %>
<% end %>
Option2以前可以正常工作,所以最近必须有所更改。
任何人都可以帮助我了解乳清Rails试图处理link_to
块,即使它包装在if false
语句中。