2015-01-16 1 views
1

현재 저는 devise를 사용하는 레일 프로젝트에서 작업 중이며 조금 문제가 있습니다.레일/Devise - 프로필에 사용자 이름 전달

저는 사용자 모델로 실행되는 기본 장치 : 설치가 있으며 프로파일이라는 다른 모델이 있습니다. belongs_to :user이고 사용자는 has_one :profile입니다.

내가 가진 문제는 사용자가 사용자 이름을 요구하므로 가입 할 때해야합니다. 그래서 이것은 devise를 통해 users 테이블에 전달됩니다. 그러나 사용자 프로필 url에 대한 사용자 이름을 사용해야합니다. 이는 프로필보기가있는 Users 테이블의 속성을 교차하는 것을 의미합니다.

사용자 모델에서 : after_create :build_profile을 사용하여 해당 사용자의 프로필을 작성하십시오. 프로파일 테이블에 first_namelast_name 등의 프로파일이 작성됩니다.

따라서 'friendly_id'보석을 사용하면 'profiles/index'페이지의 속성을 사용자 프로필에 연결할 수 있습니다. 문제는 first_name 또는 last_name과 같이 프로필 테이블에 전달 된 것만 사용할 수 있다는 것입니다. :username은 프로필 테이블이 아닌 사용자 테이블에 있으므로 연결할 수 없습니다. profile_model.rb 파일에서

, 지금 내가 사용하고 있습니다 :
extend FriendlyId 
friendly_id :first_name 

및 프로파일에

/index.html.erb 파일이 내가 사용 :이 작동

<% @profiles.each do |profile| %> 
<p><%= link_to profile.user.username, profile %></p> 
<% end %> 

/profiles/John하지만 John과 같이 URL은 고유하지 않으므로 좋지 않습니다.

+0

같은 것을 사용? – Eric

+0

그런 간단한 해결책! 나는 당신이 표준 사용자 컨트롤러를 가질 수 있다는 것을 깨닫지 못했다. 나는 그것을 고안하기 위해 잠겨 있다고 생각했다. 사용자 컨트롤러를 만들고 프로필 정보를 전달하고 작동했습니다! 정말 고맙습니다! – abbott567

답변

1

중첩 된 경로를 사용 해본 적이 있습니까? 당신의 routes.rb 파일에서 당신은 할 수 있습니다 :

resources :users do 
    resources :profiles 
end 

그런 식으로, 당신은 당신이 방금 사용하여 사용자 번호가 프로필 페이지로 표시 간주 적이 <%= link_to user_profile_path(@profile.user, @profile), @profile %>