我不是要求代码作为答案,而是要求资源或一些一般性指导。
我有一个用户的索引页面。对于每个用户,我检查朋友状态"每个用户相对于当前用户的权限。你可以想象,在视图页面中它是一个非常冗长的if和elsif语句..这基本上是:
<% if current_user %>
<% if current_user.friend_with? profile.user %>
<span class="glyphicon glyphicon-user"></span>
<% elsif current_user.invited_by? profile.user %>
<%= link_to '.', friendship_path(profile.user), :method => "put", :class => "glyphicon glyphicon-check" %>
<% elsif current_user.connected_with? profile.user %>
<span class="glyphicon glyphicon-send" title="Pending approval"></span>
<% elsif current_user == profile.user %>
<span class="glyphicon glyphicon-user"></span>
<% else %>
<%= link_to '.', friendships_path(:user_id => profile), :method => "post", :class => "glyphicon glyphicon-plus" %>
我在视图页面中有这个完整的逻辑,而且非常麻烦。我想将它清理干净并将其藏在控制器中(如果可取的话)。
任何指导都会非常感激。我想有一个方法来返回图标类型或呈现某种类型的HTML代码并将其传递到视图中。谢谢!
答案 0 :(得分:0)
辅助方法就是答案..
在帮助器中以某种方式移动它,如
def my_awesome_helper_method
- logic -
end
并在视图中调用
<%=my_awesome_helper_method %>
更干净......!
答案 1 :(得分:0)
您应该查看https://stackoverflow.com/a/7860493/1657377,这里可能包含演示者或装饰者模式。但这种逻辑肯定不属于控制器。