Значение по умолчанию для Ruby on Rails в форме - PullRequest
0 голосов
/ 10 ноября 2009

Эй, здесь нужна небольшая помощь.

У меня есть две модели:

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 ]

3 голосов
/ 10 ноября 2009

Изменить после получения дополнительной информации:

В вашем контроллере сделайте что-то вроде:

@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} %>

Это даст вам выпадающий список с именами пользователей в алфавитном порядке.

2 голосов
/ 10 ноября 2009
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.

Это то, что вы пытаетесь сделать?

0 голосов
/ 10 ноября 2009

Вы можете использовать скрытый тег поля.

Вид:

<%= hidden_field_tag 'user_id', current_user.id %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...