2012-04-12 3 views
0

나는 devise와 cancan을 레일 3.2.1과 함께 사용하고 있으며, 리팩토링되고 단순화 될 수있는 비정상적인 문제를 겪고 있습니다. 그러나 많은 검색을 한 후에 막혔습니다.last_name에 first_name을 (를) 조인하고 표시하려면 어떻게합니까?

나는 사용자 모델에서 FIRST_NAME과 LAST_NAME 필드가 성공적으로이 코드를 사용하여 사용자/show.html.erb보기에서 사용자의 전체 이름을 표시 한 :

<%= @user.first_name + " " + @user.last_name %> 

을 그리고 성공적으로 표시되었다 사용하여 헤더에 사용자의 쇼 페이지로 연결되는 링크 :

<% if user_signed_in? %> 
    <li><%= link_to @user.first_name + " " + @user.last_name, current_user %></li> 
<% end %> 

그러나, 나는이 일을 알아낼 수는 응용 프로그램의 다른 부분에서 작업 한 후에, 헤더는 나에게 정의되지 않은 메서드 오류 메시지를 제공 시작 ...

어쨌든 사용자 이름을 정의하고 작업하는 데 더 좋은 방법이 있다는 것을 알고 있으며 사용자 모델에 이름 메서드를 추가하는 등 일부 작업을 시도했지만이 게시물에서 분명히 알 수 있습니다 나는 초보자이며 그 일을 할 수 없었습니다.

이와 같은 응용 프로그램에서 사용자 이름을 사용하는 것이 가장 좋은 방법에 대한 아이디어가 있으면 알려주십시오.

+0

편집 : 사용자/show.html.erb를 탐색 할 때 헤더가 잘 작동하지만 홈 페이지를 탐색 할 때 오류가 발생합니다. –

+0

오류가 무엇입니까? 귀하의 질문에 그것을 추가 할 수 있습니까? – Christian

답변

3

여기서 @user을 정의 하시겠습니까? 나는 그것이 당신의 UsersController show 액션에 있다고 내기를 기꺼이합니다. 이것은 그 액션에서 당신의 헤더에만 정의되어 있음을 의미합니다.

이 당신의 헤더 코드를 교체하십시오 :

<% if user_signed_in? %> 
    <li><%= link_to current_user.first_name + " " + current_user.last_name, current_user %></li> 
<% end %> 

트릭은 사용자가 로그인 할 때 고안이 current_user 항상 사용할 수 있다는 것입니다 당신은 @user 인스턴스 변수를 설정에 대해 걱정할 필요가 없습니다..

+0

감사합니다. 또한, refactor 할 수있는 방법이 그래서 그냥 current_user.name 사용할 수 있습니까? –

+0

'current_user'는'User' 모델의 인스턴스입니다. 그래서 연결된 이름의 문자열을 반환하는'name'이라는 이름의 모델에 메소드를 추가하십시오 :'def name; first_name + ''+ last_name; 끝 ' –

+1

체크 표시를 해주셔서 감사합니다! 나는 계속 upvoting,하지만 15 포인트까지 시스템에 의해 막혔다. –

관련 문제