私のプロファイルモデルbelongs_to:user "User model"から "profiles"テーブルにアクセスしたいと思います。ruby on railsでプロファイルモデルインサイダーusers_controllerにアクセスするにはどうすればよいですか?
まずはusers_controllerの私のショーアクションで、ユーザープロファイルページに表示するためにプロファイルテーブルからデータを取得したいと思います。
第2に、ユーザーがフォームを使用してこれらのものを編集できるようにしたいと思います。私はこれが更新アクションで行われたことを知っていますか?編集アクションが編集ビューページにあるフォームを表示することが可能になりながら...ここ
は私のコントローラである:
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経由でそれを行う方法があると確信しています。
アドバイスをいただきありがとうございます。
ビュー:users_controllerを通じてプロファイルテーブルからのfirst_nameを引っ張って
def show
@user = User.find_by_username(params[:username])
@profile_data = @user.profile
end
ルートしようと
<%= @profile_data.first_name %>
<h4><%= current_user.username.capitalize %></h4>
<%= gravatar_image_tag(current_user.email, :alt => @title, :class => "gravatar", :gravatar => { :size => 150 }) %>
<br />
:
match ':username' => "users#show"
を私はのFIRST_NAME列に格納されている名前を見ることを期待私がlocalhostを訪問したときのプロファイルテーブル:3000/username
ユーザーの名前が表示されません。
私はこのエラーを受け取ります:未定義のメソッド 'profile 'for nil:NilClass – LondonGuy
これは、ユーザーが空であることを意味します。あなたはそれを設定する必要があります。おそらく@user = User.find(params [:id])のようなものを使用していますが、経路や実行中のアクションを見ずにもっと教えてもらえませんでした – Yule
私はいくつかのデータをプロファイルテーブルに持っています。私はlocalhost:3000/usernameにユーザプロファイルを持っています。ここではその "一致"のルートがあります:username => "users#show" "今、私は自分のデータをユーザページに表示します私はそれを訪問する。ですから、ショービューでは、@ variable_set_in_controller.first_nameを使って名前を取得できるかどうかを確認します。ショーアクションでは、私はすべてを試してもまだ運がありません。私はちょうどプロファイルテーブル/プロファイルモデルからusers_controllerのshowアクションに情報を取り込めるようにしたいです。 – LondonGuy