2016-11-26 4 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.

Любые идеи?

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 
+0

Вы можете показать свой вид и код контроллера вместо как вопрос скорее касается проблемы с представлением и контроллером. – vee

+0

@vee done - обновлен с кодом вида – zacchj

+0

Что произойдет, если вы выполните '@goal = current_user.goals.build (goal_params)' в своем действии 'create'? Вы делаете 'Goal.new (goal_params)' где 'goal_params' не имеет набора' user_id', потому что у вас его нет в 'goal_params'. – vee

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^