2016-02-24 5 views
0

Я пытаюсь создать ассоциацию, которая позволяет пользователям следовать графику, который им интересен.Как создать связь между пользователем и расписанием?

Вот моя модель:

class Scheduleship < ActiveRecord::Base 
belongs_to :user 
belongs_to :schedule 
end 

и контроллер:

class ScheduleshipsController < ApplicationController 
    def create 
     @scheduleship = current_user.scheduleships.build(schedule_id: params[:id]) 
     if @scheduleship.save 
     flash[:notice] = "Susses Added ." 
     redirect_to Posts_url 
     end 
    end 
end 

Соответствующих таблиц БД имеет два данных :user_id и :schedule_id.

И я использую link_to метод, чтобы создать связь между пользователем и графиком

<%= link_to 'add to schedule', {controller: 'scheduleships', 
action: 'create', 
user_id: current_user.id, 
schedule_id: post.id }, method: :post, class: "btn btn-default btn-sm" %> 

Но это не создает ассоциацию.

:schedule_id => nil

, как я могу это исправить?

ответ

1

Вы отправляете идентификатор расписания как schedule_id с точки зрения, но запрашиваете params[:id], что равно nil, при сохранении.

Попробуйте следующее в контроллере:

def create 
    @scheduleship = current_user.scheduleships.build(schedule_id: params[:schedule_id]) 

    if @scheduleship.save 
     flash[:notice] = "Added successful." 
     redirect_to Posts_url 
    end 
end 

Кроме того, я чувствую Scheduleship это страшное название ассоциации. Я, вероятно, поеду с UserSchedule.

+0

Я установил связь успешно, но я не могу отображать post.id в представлении 'user # show',' <% = d.schedule.title%> 'is' nil: class' –

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