2009-11-09 5 views
0

여기에 약간의 도움이 필요합니다.형태의 Ruby on Rails 기본값

나는이 두 가지 모델 :

class User < ActiveRecord::Base 
    has_many :jobs 
end 

내가 마이그레이션 내가 user_id를 내 작업/새 작업에 넣어해야합니까

class CreateJobs < ActiveRecord::Migration 
    def self.up 
    create_table :jobs do |t| 
     t.references :user 
..... 

을 배치해야합니까

class Job < ActiveRecord::Base 
    belongs_to :user 
end 

?

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

편집 : 같은 컨트롤러에서

, 무언가 :

@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

새 작업을 만들 때 현재 사용자 ID (작업을 생성 한 사용자의 ID)를 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 id에 할당됩니다.

당신이하려는 일입니까?

-1

숨겨진 필드 태그를 사용할 수 있습니다.

보기 :

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

이것을 숨겨진 태그로 지정하면 누구나 양식을 제출하기 전에 값을 수정할 수 있습니다. – emaillenin