Rails为什么要在“ if false”块中处理代码?

时间:2019-07-20 08:59:16

标签: ruby-on-rails

在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语句中。

0 个答案:

没有答案