不幸的是,这是我多天来的第二篇文章。所以应用程序与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传递但是我该如何修复它?任何帮助将不胜感激。
答案 0 :(得分:1)
有两个问题。
/show2
控制器上实际指定了操作时,您似乎正在尝试将hospitals
发送到名为fathers
的控制器。这应该可以解决问题:
resources :fathers do
get :show2, :on => :member
resources :kids
end
您也可以将上述内容写成:
resources :fathers do
member do
get :show2
end
resources :kids
end