x無法存取,你可能沒有權限或未登入。
6264b569c0e7c4647cfb0a5d6631b390

求助!namespace加上無複數名詞所造成的routing錯誤

2012-04-06 18:19:33 +0800chuyihuangRuby on Rails 節點 中發起
最後由 lulalala2012-04-09 17:16:23 +0800回應 , 321次閱讀

以前沒有這樣搭配過,現在才遇到這樣的問題

我在routes.rb中加入

namespace :admin do
resources :news
end

在rake routes後出現:

admin_news_index GET /admin/news(.:format) admin/news#index
POST /admin/news(.:format) admin/news#create
new_admin_news GET /admin/news/new(.:format) admin/news#new
edit_admin_news GET /admin/news/:id/edit(.:format) admin/news#edit
admin_news GET /admin/news/:id(.:format) admin/news#show
PUT /admin/news/:id(.:format) admin/news#update
DELETE /admin/news/:id(.:format) admin/news#destroy

問題來了,當我要進入new頁面的時候,路徑應為new_admin_news_path,但進入卻跳出No route matches {:action=>"show", :controller=>"admin/news", :id=>#<News id: nil, news_type_id: nil, title: nil, content: nil, views: nil, status: nil, start_date: nil, end_date: nil, created_at: nil, updated_at: nil, news_key: nil>}

以上的routing錯誤,本以為news是單複數同名的關係,因此進入config/initializers/inflections.rb修改,但無論是在此修改,還是到在resources :news中加入:singular => :one_news,以上這兩個方法都無法使用,我懷疑:singular這個已經失效因為我故意打錯字也一樣。

請問版上有人遇到相同問題嗎?

截至 2012-04-09 17:16:23 +0800,共收到 2 條回應
6264b569c0e7c4647cfb0a5d6631b390
chuyihuang 1樓, 於2012-04-07 13:07:18 +0800回應

我想我自己排除了這個問題,原因不是出在new_admin_news_path,而是在new的view裡的form_for,裡面create路徑有問題,因此造成錯誤,但是卻被rails的錯誤給搞混了。不過經過這個錯誤後我認為不可數名詞未來來是要避免...

009994c3985985809d2d644bd49aa1c2
lulalala 2樓, 於2012-04-09 17:16:23 +0800回應

<%= form_for([:admin, @news]) do |f| %>

是因為忘了放

嗎?

需要 登入 後方可回應,如果你還沒有帳號按這裡 註冊