我在创建具有关联的对象时遇到问题。
我有一个属于工作的消息模型,以及一个用户或跑步者。在我的 jobs/index.html 中,我想显示一个包含相应消息的工作列表以及一个为该特定工作创建新消息的表单。
问题是每当我创建一条消息时,job_id 都保持为零。我是 ruby on rails 的新手,所以我仍然不完全理解这些东西。
这是我的作业/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 %>
这是消息控制器中的 create 方法(注意: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
跑步者模型
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
每当我在 jobs/index.html 视图中提交消息表单时,它似乎成功地创建了一条成功填写了 user_id 或 runner_id 的消息(取决于谁发布了消息),但我的 job_id 属性为零。