2013-01-20 40 views
0

我的Create控制器將嵌套資源的子元素作爲null傳入,而不是將剛纔輸入的值傳入表單。控制器沒有將值從from傳遞給create方法

這裏是我的代碼

路線:

resources :trips do 
resources :pilgrims 
end 

型號:

旅行:

class Trip < ActiveRecord::Base 
    has_many :pilgrims 
    accepts_nested_attributes_for :pilgrims, :allow_destroy => true 
    attr_accessible :end_date, :leader_id, :name, :start_date, :pilgrim_attributes 

end 

歷程:

class Pilgrim < ActiveRecord::Base 
    belongs_to :trip 
    attr_accessible :pilgrim_id, :surname, :name, :middle, :aka, :prefix, :address, :city, :state, :zip, :email, :telephone, :nationality, :date_of_birth, :passport_number, :expiration, :jordan, :room, :price, :status, :trip_id 

end 

我的朝聖者控制器:

def new 
    @trip = Trip.find(params[:trip_id]) 
    @pilgrim = Pilgrim.new 
end 

def create 
    @trip = Trip.find(params[:trip_id]) 
    @pilgrim = @trip.pilgrims.build(params[:pilgrim]) 


    if @pilgrim.save 
    flash[:notice] = "The <b>#{ @pilgrim.name }</b> has been created successfully." 
    redirect_to(trip_pilgrims_path, :notice => "The <b>#{ @pilgrim.name }</b> ship has been saved successfully.") 
    else 
    render(:new, :error => @pilgrim.errors) 
    end 
end 

鏈接到我的表單代碼要旨Form

的路線似乎是正確的,當我在new_trip_pilgrim_path點擊(@旅行)它確實指向旅行/:trip_id/pilgrims/new並加載新的朝聖者形式。

但是,當我單擊保存在窗體上重定向到路線旅行/ 3 /朝聖者,但顯示新的朝聖者形式說所有必填字段留空。

這是日誌中顯示的內容。

Started POST "/trips/3/pilgrims" for 127.0.0.1 at 2013-01-19 22:12:06 -0800 
Processing by PilgrimsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"kOE06m3DNax43BOLYZ6t1lS7/T4wOWb2xM8m/mlQzvA=", "commit"=>"Create Pilgrim", "trip_id"=>"3"} 
Trip Load (0.3ms) SELECT `trips`.* FROM `trips` WHERE `trips`.`id` = 3 LIMIT 1 
(0.2ms) BEGIN 
(0.2ms) ROLLBACK 
Pilgrim Load (0.4ms) SELECT `pilgrims`.* FROM `pilgrims` WHERE `pilgrims`.`trip_id` = 3 
Rendered pilgrims/_form.html.erb (36.4ms) 
Rendered pilgrims/new.html.erb within layouts/application (37.2ms) 
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1 
Trip Load (0.3ms) SELECT `trips`.* FROM `trips` 
Completed 200 OK in 244ms (Views: 102.5ms | ActiveRecord: 11.2ms) 

Pilgrim create controller正在發生什麼?

+0

你似乎已經發布了兩次「旅行」的代碼,而沒有「朝聖者」的代碼。 –

回答

0

您正在嘗試通過調用

@pilgrim = @trip.pilgrims.build(params[:pilgrim]) 
在PilgrimsController

創建一個新的朝聖者的物體。但是Parameters: {"utf8"=>"✓", "authenticity_token"=>"kOE06m3DNax43BOLYZ6t1lS7/T4wOWb2xM8m/mlQzvA=", "commit"=>"Create Pilgrim", "trip_id"=>"3"}不包含任何朝聖者參數。所以問題是用於創建一個新的朝聖者的形式

+0

以下是我的表單代碼:https://gist.github.com/4577016 – Hillary

+0

@Hillary HTML輸出是什麼樣的? –

相關問題