2017-08-24 9 views
0

私は、スタッフと臨床家のために2つの一致するユーザサブクラスを持つ列挙型と単一テーブル継承を使用して定義された2つのロールを持つ単一のユーザテーブルを持っています。私がスタッフについて必要としない臨床家についての多くの情報が必要なので、私はclin​​ician_profilesテーブルを作成し、臨床家プロファイルのスタブを作成するために、ユーザモデルのafter_create:create_clinician_profileを使用しています。コントローラのインスタンス変数の定義問題:Rails 5

私は臨床医が自分のプロファイルを完成させるためのページを作成しようとしていますが、フォームをレンダリングするために適切な臨床家のプロファイルをビューに引き込むように、次のエラーが表示されます。ユーザーIDは104としてログインしています。

私は近くにいるように感じますが、私が間違っていることはわかりません。どんな助けもルーキーにとって大いに感謝されるでしょう!

私はヘッダにこのリンクを使用して、ページに上陸しています:ここで

<li><%= link_to "Manage My Profile", edit_clinician_profile_path(current_user) %></li> 

は私のユーザモデルの関連部分は以下のとおりです。

class User < ApplicationRecord 
    self.inheritance_column = :role 
    enum role: { Staff: 0, Clinician: 1} 
    belongs_to :university 
    has_many :referral_requests 

class Staff < User 
    validates :university_id, presence: true 
end 

class Clinician < User 
    has_many :lists 
    has_many :universities, through: :lists 
    has_one :clinician_profile 
    after_create :create_clinician_profile 
end 

ここに私のClinicianProfileモデルです:

class ClinicianProfile < ApplicationRecord 
    has_many :clinician_profile_languages 
    has_many :languages, through: :clinician_profile_languages 
    has_many :clinician_profile_races 
    has_many :races, through: :clinician_profile_races 
    belongs_to :clinician 
end 

clinician_profiles schema

create_table "clinician_profiles", force: :cascade do |t| 
    t.datetime "created_at",   null: false 
    t.datetime "updated_at",   null: false 
    t.string "firstname" 
    t.string "lastname" 
    t.string "address1" 
    t.string "address2" 
    t.string "city" 
    t.string "state" 
    t.string "zip" 
    t.boolean "accepting_patients" 
    t.integer "rate" 
    t.string "license_number" 
    t.string "license_state" 
    t.string "school" 
    t.integer "year_graduated" 
    t.string "accepts_insurance" 
    t.boolean "sliding_scale" 
    t.text  "bio" 
    t.boolean "verified" 
    t.integer "years_licensed" 
    t.integer "years_of_experience" 
    t.integer "clinician_id" 
    end 

ClinicianProfilesController

class ClinicianProfilesController < ApplicationController 
def edit 
    @clinician_profile = ClinicianProfile.find(params[:id]) 
end 

def index 
end 

def show 
end 

def create 
end 

end 

ここで(中/ビュー/ clinician_profiles edit.html.erb)

<%= form_for(@clinician_profile) do |f| %> 
<%= render 'shared/error_messages', object: f.object %> 
+0

が私の見解の始まりだあなたがClinicianProfileが作成されていないようですあなたが正しいparams [:id]を渡しているかどうかを確認してください。 – nersoh

+1

あなたのユーザーIDが104ではありませんか? (あなたがログインしているもの)。そのユーザーに属するClinicianProfileは、異なるIDを持つ可能性があります。 「臨床家」が分かっているならば、@clinician_profile = current_user.clinician_profile' – rccursach

+0

編集ビューにどのように着陸しますか?リンクをクリックするともしそうなら、そのコードを投稿してください。どこか間違った 'params'を渡しているところ – Pavan

答えて

-1
def edit 
    @clinician_profile = ClinicianProfile.find(params[:id]) 
    redirect_to :index and return unless @clinician_profile 
end 
+0

ここで何を言おうとしていますか? – Pavan

+0

@clinician_profileがnullの場合は、インデックスページに戻り、フォームを編集しないことを確認します。 –

+0

これはどのようにOPに答えてエラーを解決しますか? – Pavan

関連する問題