2011-01-08 205 views
3

不幸的是,這是我多天來的第二篇文章。所以應用程序在mysql和rails 3.0.3下運行良好,但是我發現我需要使用MSSQL,因此我必須將rails降級到3.0.1。找不到<object>沒有ID導軌3.0.1

簡而言之,我將show.html.erb複製爲show2.html.erb並創建了一個新方法,它是show方法的副本。然後我創建了一個路線匹配。

我控制器

class fathersController < ApplicationController 
    def show 
    @father= Father.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @father} 
    end 
    end 

    def show2 
    @father= Father.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @father} 
    end 
    end 
end 

的routes.rb

resources :fathers do 
    match '/show2' => 'fathers#show2' 
    resources :kids 
end 

當我打電話

http://127.0.0.1:3000/father/1 

我得到的放映視圖,但是當我打電話

http://127.0.0.1:3000/father/1/show2 

我收到以下錯誤

Couldn't find father without an ID 

請求參數回來爲

{"father_id"=>"1"} 

,所以我知道,問題是,應用程序是通過ID作爲father_id但我怎麼解決?任何幫助,將不勝感激。

回答

1

有兩個問題。

  1. 您試圖在實際應該是足智多謀的路線上使用非資源性路線。
  2. 看起來您正試圖將/show2發送到名爲hospitals的控制器,當您的操作在fathers控制器上實際指定時。

這應該做的伎倆:

resources :fathers do 
    get :show2, :on => :member 
    resources :kids 
end 

你也可以寫在上面:

resources :fathers do 
    member do 
    get :show2 
    end 

    resources :kids 
end  
+0

謝謝,我試過,但現在它正在傳遞正確的變量,但現在我得到我昨天得到的錯誤爲nil:NilClass的未定義方法`name',所以現在它沒有看到父類是合法的 – 2011-01-08 04:13:17