2009-11-09 2 views
0

Эй, вам нужно немного помочь здесь.Значение по умолчанию для 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

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

В контроллере, сделать что-то вроде:

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

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

+0

Это круто, спасибо. Что, если я хочу разместить там точного текущего пользователя? –

+0

Думаю, я не совсем понимаю ваш вопрос. Что именно вы пытаетесь сделать с этой формой? – JRL

+0

Когда я создаю новое задание, я хочу поместить текущий идентификатор пользователя (идентификатор пользователя, который создает задание) в user_id. Таким образом, я буду знать, кто создаст эту работу. Мне даже не нужно это видеть на мой взгляд. Это значение должно автоматически ставиться –

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.

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

-1

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

Вид:

<%= hidden_field_tag 'user_id', current_user.id %> 
+0

Помещая это как скрытые теги, вы можете изменить значение перед отправкой формы – emaillenin

Смежные вопросы