2012-02-27 59 views
0

我是一般的Rails和Web开发新手。我试图更好地理解根据哪个用户正在访问某个页面,在我的视图上呈现不同按钮的选项。我正在使用Rails 3.2。在Rails中管理动作按钮状态的最佳做法

2我具体情况:

  1. 在我的电影页面,我想显示书签按钮。该按钮应该说“添加书签”,如果用户未登录或者电影不在用户书签列表中,则不会检查。如果用户在她的书签中添加了电影,该按钮应该说“删除书签”并且被检查(带有“活动”css类)。

  2. 如果用户搜索“动作电影”,视图呈现电影列表。根据电影是否在用户的书签列表中,列表中的每个项目都应显示“添加书签”/“删除书签”按钮。

根据我的用户状态,管理我的按钮文本,操作和显示的最佳实践是什么?代码去哪儿(view,javascript ...)以及我需要实现哪些关键方法?

回答

0

那么,最好的做法是使用类似Draper:https://github.com/jcasimir/draper的东西,它负责根据一组条件呈现正确的内容。

然而,这会工作,但应该probalby被重构到一个德雷珀装饰:

<% if user.has_bookmarked(@movie) %> 
    <%= link_to 'Remove bookmark', remove_bookmark_path%> 
<% else %> 
<%= link_to 'Add bookmark', add_boookmark_path %> 

但同样,在装饰你可能只是做一次

def display_correct_bookmark_link_for_movie(movie) 
    if current_user.has_bookmarked(movie) 
    h.link_to 'Remove bookmark', remove_bookmark_path 
    else 
    h.link_to 'Add bookmark', add_boookmark_path 
    end 
end 

,然后在你的看法你可以拨打电话:

<%= display_correct_bookmark_link_for_movie(@movie) %> 

否则,你会重复这个逻辑遍布你的观点,这是不好的。

显然有些是伪代码,但我认为你得到了我的漂移。