我用ROR 3.2和想單獨服務於在自己的文件夾管理的目的,但使用相同的模型作爲公共控制器使用的控制器。我遇到了一個我將在這裏解釋的問題。我以不同的方式解決問題,但這更好地解釋了它。嵌套路線路徑對模型有依賴嗎?
新鮮的Rails應用程序,我運行:
rails generate scaffold admin/stats name:string value:string
所有其他文件中它創建:
localhost:3000/admin/stats/
我看到了以下路線:下
create app/models/admin/stat.rb
一切正常:
admin_stats GET /admin/stats(.:format) admin/stats#index
POST /admin/stats(.:format) admin/stats#create
new_admin_stat GET /admin/stats/new(.:format) admin/stats#new
edit_admin_stat GET /admin/stats/:id/edit(.:format) admin/stats#edit
admin_stat GET /admin/stats/:id(.:format) admin/stats#show
PUT /admin/stats/:id(.:format) admin/stats#update
DELETE /admin/stats/:id(.:format) admin/stats#destroy
在這裏,我的routes.rb文件:
SampleApp::Application.routes.draw do
namespace :admin do resources :stats end
namespace :admin do resources :users end
root :to => 'welcome#index'
end
現在令我百思不解。讓我們通過界面輸入一個數據行。假設統計數據在模型/而不是模型/管理員下。我改變和移動類,改名爲表,改變了控制器的索引方法,這(以反映新的模型)
def index
@admin_stats = Stat.all #was Admin::Stat.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @admin_stats }
end
end
爲什麼我現在訪問相同的時候看到一個不存在的方法,這個錯誤URL again localhost:3000/admin/stats /?
NoMethodError in Admin/stats#index
Showing [...]/sample_app/app/views/admin/stats/index.html.erb where line #16 raised:
undefined method `stat_path' for #<#<Class:0x007fe96d51a348>:0x007fe96d53a1e8>
...
16: <td><%= link_to 'Show', admin_stat %></td>
我沒有碰任何視圖文件和對象仍然是所謂@admin_stats,並通過「耙路線」創建的路線仍然是相同的預期。爲什麼它破裂? (我發現我自己的解決方案,只需具有簡單地繼承了常規模式,並使用管理員::統計作爲對象的每個模型的管理模式,但我還是想了解爲什麼這個時間)
你會提供您'routes.rb'文件的內容? – larryzhao
當然: SampleApp :: Application.routes.draw做 命名空間:管理員做資源:統計結束 命名空間:管理員做資源:用戶最終 根:到=>「歡迎#指數」 –
也把它添加到問題。你能重現這種行爲嗎? –