没有ID rails 3.0.1 </object>时找不到<object>

时间:2011-01-08 03:25:48

标签: activerecord model view ruby-on-rails-3

不幸的是,这是我多天来的第二篇文章。所以应用程序与mysql和rails 3.0.3一起工作正常,但我发现我需要使用MSSQL,所以我不得不将rails降级到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 个答案:

答案 0 :(得分:1)

有两个问题。

  1. 您正试图在实际应该足智多谋的路线上使用非资源路线。
  2. 当您在/show2控制器上实际指定了操作时,您似乎正在尝试将hospitals发送到名为fathers的控制器。
  3. 这应该可以解决问题:

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

    您也可以将上述内容写成:

    resources :fathers do
      member do
        get :show2
      end
    
      resources :kids
    end