매우 간단한 소셜 네트워크를 만들고 싶습니다. 필자는 User (Devise gem 사용)와 그의 Profile이라는 두 가지 모델로 시작했습니다. 그들은 1 대 1의 관계로 연결되어, 그래서 내 경로는 다음과 같다 :Rails 3의 단일 리소스 모델에 유효성 검사를 추가 할 수 없습니다.
resources :users do
resource :profile
end
내가 적절한 컨트롤러가 - 여기에 프로파일을 생성하기위한 코드 (편집이 거의 동일)입니다 :
def new
@profile = current_user.create_profile
end
def create
@profile = current_user.profile.create(params[:profile])
if @profile.save
redirect_to user_profile_path(current_user)
else
render :action => "new"
end
end
가
사용자가 주소 표시 줄에 무엇을 입력했는지에 관계없이 다른 사용자의 프로필을 만들 수 없으므로 current_user 변수를 사용했습니다. 나는 형태있어 '새'보기에서
: 내가 기대했던대로 작동하고
- form_for [@profile.user, @profile] do |p|
(fields omitted)
- 사용자가 프로필에 자신의 데이터를 추가 할 수 있습니다 타격 후 "저장은"새로 만든 자신의 리디렉션됩니다 페이지. 나는 (validates_presence_of처럼, 심지어 간단한 것들) 프로필 모델에 약간의 검증을 추가 한 다음 새 프로필을 만들려고 할 때, 내 컨트롤러 나에게 오류 보여줍니다
undefined method `user_profiles_path' for #<#<Class:0xb2d3e5c>:0xb2d2728>
Extracted source (around line #1):
1: - form_for [@profile.user, @profile] do |p|
그것은, 이상하다을하지만,이 문제가되지 않습니다 새로운 프로필을 만들려고 할 때만 프로필 정보를 업데이트 할 때 발생합니다. form_for 도우미에서 리디렉션 URL을 지정하라는 해결책을 봤습니다. 그래서 내 견해로 변경했습니다 :
- form_for [@profile.user, @profile], :url => user_profile_path(@profile.user) do |p|
여전히 작동하지 않습니다.
undefined method `create' for nil:NilClass
내가조차 찾을 : 그것은 내가 원하는 뷰가 표시됩니다 (오른쪽 시작부터 유효성 검사 오류 메시지를,하지만 난 ;-) 그와 함께 살 수), 그러나 타격 후 "저장"그것은 또 다른 문제를 발생 더 이상한, 오류 세부 정보의 매개 변수 개체를 표시하기 때문에 올바른 데이터를 포함하고 모든 것이지만 nil이 아닙니다. 나는 아이디어가 부족했다. 무엇이 잘못 될 수 있는지.
조금 궁금합니다. 내 문제의 원인은 무엇이며이를 수정하는 방법은 무엇입니까?
미리 감사드립니다.
시간에 하나의 질문을하지 말아주세요 –