내 프로파일 모델 인 belongs_to : "User model"에서 "profiles"테이블에 액세스하고 싶습니다.레일즈에서 루비의 프로필 모델 내부자 users_controller에 액세스하려면 어떻게해야합니까?
첫 번째로 users_controller의 내 쇼 동작에서 사용자 프로필 페이지에 표시하기 위해 프로필 테이블의 데이터를 가져오고 싶습니다.
두 번째로 사용자가 양식을 사용하여 이러한 것들을 편집 할 수있게하고 싶습니다. 이 작업이 업데이트 작업에서 수행된다는 것을 알고 있습니까? 편집 작업은 그것이 편집보기 페이지에서 양식 .. 여기
을 표시 가능하게하면서 내 컨트롤러는 다음과 같습니다
class UsersController < ApplicationController
def new
@user = User.new
@title = "Practice"
end
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
@user.build_profile.save #same as Profile.new(:user_id => @user.id)
login @user
UserMailer.join_confirmation(@user).deliver
format.js { render :js => "window.location = '#{root_path}'" }
flash[:notice] = "Welcome!"
else
format.js { render :form_errors }
end
end
end
def show
end
def update
end
def edit
end
end
1) 어떻게 내 프로필 테이블에 액세스 할 것인가? 사용자 has_one : profile Profile belongs_to : user
감사합니다. 날 반으로 날마다 프로필 테이블에 생성 된 가입시 새로 생성 된 사용자에 해당하는 행을 얻는 방법을 알아 냈습니다. 이제 다음 단계는 내 users_controller에서 모델의 데이터를 가져올 수있는 것입니다. 나는 단지 profiles_controller를 만들고 거기에서 일을 할 수 있다는 것을 알고 있지만 users_controller를 통해 그것을 할 수있는 방법이 있다는 것을 확신하기 때문에 지금 시도하지 않으려 고합니다.
미리 조언 해 주셔서 감사합니다.
보기 :
<%= @profile_data.first_name %>
<h4><%= current_user.username.capitalize %></h4>
<%= gravatar_image_tag(current_user.email, :alt => @title, :class => "gravatar", :gravatar => { :size => 150 }) %>
<br />
가 users_controller를 통해 프로파일 테이블에서 FIRST_NAME을 끌어 시도
def show
@user = User.find_by_username(params[:username])
@profile_data = @user.profile
end
경로 :
match ':username' => "users#show"
내가 이름의 FIRST_NAME 컬럼에 저장 것으로 예상 localhost : 3000/username을 방문하면 프로필 테이블
사용자 이름이 표시되지 않습니다.
이 오류가 발생합니다. 정의되지 않은 메서드 'profile'for nil : NilClass – LondonGuy
즉 사용자가 비어 있음을 의미합니다.그것을 채워야합니다. 아마도 @user = User.find (params [: id])와 같은 것을 사용하고 있지만 경로를 보지 않고 실행중인 작업을 알지 못한다면 – Yule
프로필 테이블에 데이터가 있습니다. 나는 localhost : 3000/username에 사용자 프로필을 가지고 있으며 여기에 "match '에 대한 경로가 있습니다. username'=>"users # show ""이제는 사용자 페이지에 해당 사용자의 데이터가 표시됩니다. 나는 그것을 구경한다. 따라서 쇼 뷰에서 @ variable_set_in_controller.first_name을 사용하여 이름을 가져올 수 있는지 확인합니다. 쇼 동작에서 나는 모든 것을 시도했지만 여전히 운이 없다. 프로필 테이블/프로필 모델에서 users_controller의 show 액션으로 정보를 가져올 수 있기를 원합니다. – LondonGuy