我是新手。我只是想在控制器中为以下代码创建一个方法,以避免在视图中再次重复。我如何在ruby on rails中以简洁而优雅的方式编写代码?
<% @A = ....... %>
<% @B = ....... %>
<% @C = ....... %>
<% @D = ....... %>
<% @E = ....... %>
<% if (@A || @B || @C) %>
<label> One: </label>
<%= ... %>
<label> Two: </label>
<%= ... %>
<% end %>
<% if (@A || @B || @C || (@D && @E)) %>
<label> Three: </label>
<%= ... %>
<% end %>
假设您的模型名为 User
,您提供的代码位于"app/views/users/show.html.erb"
我建议进行如下重构:
(您需要用适当的逻辑替换A,B,C,D and E
,并将方法重命名为更有意义的内容)
# in "app/helpers/users_helper.rb"
module UsersHelper
def isABC
return A || B || C
end
def isDandE
return D && E
end
end
# in "app/views/users/show.html.erb
<% if (isABC) %>
<label> One: </label>
<%= ... %>
<label> Two: </label>
<%= ... %>
<% end %>
<% if (isABC || isDandE) %>
<label> Three: </label>
<%= ... %>
<% end %>
你可以在这里阅读Rails的帮助:http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails
基本上控制器的职责是接受传入的web请求,获取必要的数据(Model
)并调用适当的View
进行渲染。
Rails有Helpers
,可以从你的Views
调用。习惯用法是将视图中使用的任何高级逻辑放入Helper