2012-02-20 63 views
0

我有一個按照下面的註冊模型,並試圖在窗體視圖中使用date_select和options_from_collection_for_select。我無法創建,因爲我不知道是否使用.build或。新和date_select似乎形式分別發送日/月/年,如date_select和構建問題

Parameters: {"utf8"=>"✓", "authenticity_token"=>"HUQmbkmoATm6P/Avl11wmYqMrYeXVTZ/qmYfC2dpAFM=", "enrolment"=>{"course"=>"First Aid", "expiry(1i)"=>"2012", "expiry(2i)"=>"2", "expiry(3i)"=>"20"}, "commit"=>"Create Enrolment", "group_id"=>"2"} 

我的入學模式..

class Enrolment < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :group 
    attr_accessible :course_id, :group_id, :expiry 
    validates_presence_of :expiry, :course_id, :group_id 
end 

。在我_form.html.erb

<%= form_for([:admin,@group,@enrolment]) do |f| %> 
--- 
    <div class="field"> 
    <%= f.label :course %><br /> 
    <%= f.select :course, options_from_collection_for_select(@courses, 'name', 'name') %> 
    </div> 
    <div class="field"> 
    <%= f.label :expiry %><br /> 
    <%= f.date_select :expiry, :start_year => Time.now.year, :end_year => Time.now.year + 5 %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

在我的入學人數控制器

def new 
    @group = Group.find(params[:group_id]) 
    #@enrolment = @group.enrolments.build 
    @enrolment = Enrolment.new 
    @courses = Course.all 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @enrolment } 
    end 
    end 

    def create 
    @group = Group.find(params[:group_id]) 
    @course = Course.find_by_name(params[:enrolment][:course]) 
    @courses = Course.all 
    #@enrolment = Enrolment.new(params[:enrolment]) 
    @enrolment = @group.enrolments.build(:course_id => @course.id) 

    respond_to do |format| 
     if @enrolment.save 
     format.html { redirect_to admin_group_path(@group), notice: 'Enrolment was successfully created.' } 
     format.json { render json: @enrolment, status: :created, location: @enrolment } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @enrolment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

當我嘗試提交給我的驗證錯誤,我的失效不能爲空,我如何將這添加到創建方法,所以它的工作原理?任何幫助深表感謝

回答

1

你有沒有嘗試過:

@enrolment = @group.enrolments.build(params[:enrolment]) 

基本上你不使用通過表單提交的用戶信息,這是您的到期爲零的原因。 當然中,你必須改變你的形式了一下,像

options_from_collection_for_select(@courses, 'id', 'name') 

所以你要傳遞ID而不是名字。

+0

感謝那在我將選擇字段名稱更改爲course_id時工作的<%= f.select:course_id,options_from_collection_for_select(@courses,'id','name')%> – Norto23 2012-02-22 00:25:40