2016-11-26 13 views
0

私は理解できない奇妙な問題を抱えています。Railsの関連付けが機能しません

これは非常に基本的なプログラミングです:ユーザーモデルと目標モデルの間の関連付けを作成したいと思います。

goal.rb

class Goal < ActiveRecord::Base 
    belongs_to :user 
end 

user.rb

class User < ActiveRecord::Base 
    has_many :goals, dependent: :destroy 
    has_many :records 
    has_many :orders 
end 

私は、コンソールからの関連付けを作っています、それがうまく機能している、と言うことができます:

$ goal = Goal.first 
$ goal.user_id = 1 
$ goal.save 
$ goal.inspect 


#<Goal id: 1, description: "loremipsum", created_at: "2016-11-26 12:39:34", updated_at: "2016-11-26 12:43:41", name: "ipsumlorem", user_id: 1> 

しかし、私がいるとき私のビューからゴールを作成すると、関連付けは行われず、ゴールuser_idのuser_idはnilのままです。

アイデア?

必要に応じて編集:として

_form.html.erb

<%= form_for(@goal) do |f| %> 
    <%= f.text_field :name, class: "form-control" %> 
    <%= f.text_area :description, class: "form-control" %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

goal_controller.rb

def new 
    @users = User.all 
    @goal = current_user.goals.build 
    end 

    def edit 
    end 

    def create 
    @goal = Goal.new(goal_params) 
    @goal.save 
    redirect_to root_path, notice: "Objectif sauvegardé" 
    end 
+0

があなたの代わりにあなたのビューとコントローラーのコードを表示することができますビューとコントローラの問題に関して、より多くの質問があります。 – vee

+0

@vee done - ビューコード – zacchj

+0

で更新されました 'create'アクションで' @goal = current_user.goals.build(goal_params) 'を実行するとどうなりますか? Goal.new(goal_params) 'を実行しています。ここで' goal_params'は 'goal_params'に与えられていないので、' user_id'がセットされていません。 – vee

答えて

1
def create 
    # Here!!!! 
    @goal = current_user.goals.new(goal_params) 
    @goal.save 
    redirect_to root_path, notice: "Objectif sauvegardé" 
end 
関連する問題