我有两种模式:
class User < ActiveRecord::Base
has_many :jobs
end
和
class Job < ActiveRecord::Base
belongs_to :user
end
当我做迁移时,我把
class CreateJobs < ActiveRecord::Migration
def self.up
create_table :jobs do |t|
t.references :user
.....
我应该为user_id做什么工作/新动作?
我使用resfull_authentication,所以我有current_user帮助器。
<% form_for(@job) do |f| %>
<%= f.error_messages %>
<p>
User:
<%= f.label current_user.login %> #works fine for me! current_user.id works fine two!
??????????????? But what should i put for value???????
</p>
<p>
<%= f.label :filename %><br />
<%= f.text_field :filename %>
</p>
我应该将current_user.id放在控制器上吗?如果是这样,怎么样?
请帮忙!非常感谢你!
答案 0 :(得分:3)
更多信息后修改:
在您的控制器中,执行以下操作:
@user = User.find_by_id(session[:user_id])
@job = Job.new(params[:job])
@user.jobs << job
原始回答:
你可以拥有类似的东西:
<%= f.collection_select :user_id, User.find(:all, :order => "name ASC"),
:id, :name, {:include_blank => true} %>
这将按字母顺序为您提供用户名的下拉列表。
答案 1 :(得分:2)
def new
@job = current_user.jobs.new
end
def create
@job = current_user.jobs.build(params[:job])
if @job.save
redirect_to @job
else
render 'new'
end
end
创建作业后,user_id列将自动分配给current_user id。
这是你想要做的吗?
答案 2 :(得分:-1)
您可以使用隐藏字段标记。
查看:
<%= hidden_field_tag 'user_id', current_user.id %>