我正在尝试将Rails2应用程序移植到Rails4应用程序(!)。我没有为端口保留单独的分支,而是使用'if'子句来区分Rails4特定的API。
if Rails::VERSION::STRING < "4"
# rails2 specific api call
else
# rails4 specific api call
end
到目前为止,这对控制器和模型非常有效。但是,我对Rails2 erb
存在问题。
<% if Rails::VERSION::STRING < "4" %>
<% form_for(...) do |f| %>
<% end %>
<% else %>
<%= form_for(...) do |f| %>
<% end %>
<% end %>
失败,因为在Rails2中,erb
也评估else
子句并且无法呈现<%= form_for(...) do |f| %>
,因为在Rails 2中,form_for
返回的对象没有{{ 1}}方法。
你们知道解决这个问题的任何提示吗?
答案 0 :(得分:1)
尝试将Rails 4代码放入一个块中。在帮助器中的某处定义 rails4_stuff :
# application_helper.rb
def rails4_stuff
yield if Rails::VERSION::STRING < "4"
end
然后在再培训局:
<% rails4_stuff do %>
<% form_for(...) do |f| %>
<% end %>
<% end %>