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.
Любые идеи?
EDIT КАК ТРЕБУЕТСЯ:
_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
Что произойдет, если вы выполните '@goal = current_user.goals.build (goal_params)' в своем действии 'create'? Вы делаете 'Goal.new (goal_params)' где 'goal_params' не имеет набора' user_id', потому что у вас его нет в 'goal_params'. – vee