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
があなたの代わりにあなたのビューとコントローラーのコードを表示することができますビューとコントローラの問題に関して、より多くの質問があります。 – vee
@vee done - ビューコード – zacchj
で更新されました 'create'アクションで' @goal = current_user.goals.build(goal_params) 'を実行するとどうなりますか? Goal.new(goal_params) 'を実行しています。ここで' goal_params'は 'goal_params'に与えられていないので、' user_id'がセットされていません。 – vee