Ruby on Rails表单上的默认值

时间:2009-11-09 23:34:58

标签: ruby-on-rails

嘿,这里需要一些帮助。

我有两种模式:

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放在控制器上吗?如果是这样,怎么样?

请帮忙!非常感谢你!

3 个答案:

答案 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 %>