2012-02-27 3 views
0

레일 및 웹 개발에 대해 처음 보았습니다. 어떤 사용자가 페이지를 방문하는지에 따라 내보기에 다른 버튼을 렌더링하는 옵션이 무엇인지 더 잘 이해하려고합니다. 나는 Rails 3.2와 함께 일하고있다. 나를 위해레일에서 액션 버튼 상태를 관리하는 모범 사례

이 특별한 경우 : 내 영화 페이지에서

  1. , 나는 북마크 버튼을 표시합니다. 버튼에 '북마크 추가'라고 말하고 사용자가 로그인하지 않았거나 동영상이 사용자의 북마크 목록에없는 경우에는 선택되지 않습니다. 사용자가 북마크에 동영상을 추가하면 버튼에 '북마크 삭제'라고 표시되고 '활성'CSS 클래스로 선택됩니다.

  2. 사용자가 "액션 영화"를 검색하면보기가 영화 목록을 렌더링합니다. 목록의 각 항목은 동영상이 사용자의 북마크 목록에 있는지 여부에 따라 '북마크 추가'/ '북마크 삭제'버튼을 표시해야합니다.

사용자 상태에 따라 버튼 텍스트, 동작 및 표시를 관리하는 모범 사례는 무엇입니까? 어디 코드가 이동 (보기, 자바 스크립트 ...), 그리고 내가 구현해야 할 핵심 방법은 무엇입니까?

답변

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) %> 

그렇지 않으면, 당신은 그 논리가 당신의 견해에 걸쳐서 좋지 않다는 것을 반복 할 것입니다.

분명히 그 중 일부는 psuedo-code이지만 나는 당신이 내 표류를 얻는다 고 생각합니다.

관련 문제