У меня возникла проблема с созданием объекта с ассоциацией.Ruby on rails: проблема с созданием объекта с несколькими ассоциациями
У меня есть модель сообщений, которая принадлежит заданию, а также пользователю или бегун. Внутри моей работы/index.html Я хочу показать список заданий с соответствующими сообщениями и формой для создания нового сообщения для этой конкретной работы.
Проблема в том, что когда я создаю сообщение, job_id остается ноль. Я новичок в рубинах на рельсах, поэтому я до сих пор не понимаю этого.
Вот часть моих работ/index.html (ПРИМЕЧАНИЕ: не мой фактический код, я в классе, поэтому я просто набрал это, может содержать синтаксические ошибки).
<% @jobs.each do |job| %>
<p> <%= job.body %> </p>
<%= form_for job.messages do |f| %>
<%= f.label :body %>
<%= f.text_field :body %>
<%= f.submit %>
<% end %>
<%if job.messages.present? %>
<ul>
<% job.messages.each do |message| %>
<li>
<p> message.description <p>
</li>
<% end %>
</ul>
<% else %>
<p> No messages <p>
<% end %>
<% end %>
Вот создать метод контроллера сообщения (Примечание: current_login может быть бегуном или пользователем, они оба разделяют те же атрибуты)
def create
@message = current_login.messages.new(params[:message])
@message.save
end
индекс контроллера Работы действие
def index
@jobs = Job.all
end
Модель сообщения
class Message < ActiveRecord::Base
attr_accessible :description
belongs_to :user
belongs_to :runner
belongs_to :job
end
модель пользователя
class User < ActiveRecord::Base
attr_accessible :username
has_many :jobs
end
Runner модель
class Runner < ActiveRecord::Base
attr_accessible :username
has_many :jobs
end
модель работы
class Job < ActiveRecord::Base
attr_accessible :body
has_many :messages
belongs_to :user
belongs_to :runner
end
Всякий раз, когда я отправить форму сообщения внутри вида работы/index.html, это, кажется, успешно создать сообщение с user_id или runner_id успешно заполнено (в зависимости от того, кто отправил сообщение), но я получаю нуль для атрибута job_id.
Я не знаю, могу ли я это сделать, новый используется для создания новых заданий, а не сообщений. – user2158382
уверен, что вы можете.посмотреть видео, которое я только что добавил в свой ответ – Kristian
Спасибо, это видео было полезно, но оно не решило мою проблему. – user2158382