저는 현재 devise를 사용하여 레일 프로젝트를 진행 중이며 약간의 문제가 발생했습니다.
기본 devise : install이 사용자 모델로 실행되고 Profile이라는 다른 모델이 있습니다. 그것 belongs_to :user
, 그리고 사용자 has_one :profile
.
내가 가진 문제는 사용자에게 사용자 이름이 있어야하므로 가입 할 때 수행해야한다는 것입니다. 그래서 이것은 devise를 통해 users 테이블로 전달됩니다. 하지만 사용자 프로필 URL에 사용자 이름을 사용해야합니다. 이것은 사용자 테이블의 속성을 프로필보기와 교차하는 것을 의미합니다.
사용자 모델에서 사용하고있는 : after_create :build_profile
해당 사용자에 대한 프로필을 작성합니다. 그러면 프로필 테이블에 first_name
and last_name
etc 가 포함 된 프로필이 생성 됩니다.
따라서 'friendly_id'gem을 사용하여 '프로필 / 색인'페이지의 속성을 사용자 프로필에 연결할 수 있습니다. 문제는 프로파일 테이블 이 아닌 사용자 테이블에있는 것과 같이 프로파일 테이블에 전달 된 항목 만 사용할 수 first_name
있거나 last_name
연결할 수 없다는 :username
것입니다.
profile_model.rb 파일에서 현재 다음을 사용하고 있습니다.
extend FriendlyId
friendly_id :first_name
및 profiles / index.html.erb 파일에서 다음을 사용하고 있습니다.
<% @profiles.each do |profile| %>
<p><%= link_to profile.user.username, profile %></p>
<% end %>
이것은 / profiles / John과 같은 URL을 만드는 데 작동하지만 John은 고유하지 않기 때문에 좋지 않습니다.
중첩 된 경로 사용을 고려해 보셨습니까? route.rb 파일에는 다음이 포함될 수 있습니다.
resources :users do
resources :profiles
end
그런 다음 다음과 같은 것을 사용합니다. <%= link_to user_profile_path(@profile.user, @profile), @profile %>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다