Har*_*and 3 routes ruby-on-rails
我正在实现一个管理子域名,并已谷歌搜索尝试找到这个答案,但我没有找到另一个实例.
对于子域部分,我的路由如下所示:
constraints :subdomain => 'admin' do
scope :module => "admin" do
resources :news, :events
match 'news', :to => 'news#index', :as => 'news'
root :to => "dashboard#index"
end
end
Run Code Online (Sandbox Code Playgroud)
事件工作正常,但出于某种原因,为了使新闻工作,我需要添加一个特定的路线来匹配它.显示生成错误的部分位置(admin/shared/menu)可能会有所帮助:
<ul>
<li><%= link_to 'Home', root_path, :class => "#{current_class?(root_path)}" %></li>
<li><%= link_to 'News', news_path, :class => "#{current_class?(news_path)}" %></li>
<li><%= link_to 'Events', events_path, :class => "#{current_class?(events_path)}" %></li>
<div class="clearboth"></div>
</ul>
Run Code Online (Sandbox Code Playgroud)
然后错误,如果我要删除匹配路线:
No route matches {:action=>"show", :controller=>"admin/news"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)
我只是不知道为什么,有什么想法?
Har*_*and 10
我发现这是rails的一个问题,因为多个问题,新闻 - >新的不应该使用命名约定新闻,因此我不得不将所有内容重命名为文章.我本人的监督,有点愚蠢.
Rails感到困惑的原因是因为“新闻”用于单数和复数。news'.singularize给news; 并news.pluralize给出了答案news(维基百科对此现象进行了更详细的描述;也有其他词也做同样的事情)。
Rails将生成一条news_path路线(对于index动作,是复数)和一条news_path路线(对于show动作,是单数)。
奇异路线需要一个News实例;似乎该show动作是在以后定义的,并且会覆盖索引动作,从而导致奇怪的行为。
解决方案很简单:news_index_path如果需要索引操作,请使用。我没有遇到任何其他问题,并且仍在使用该News模型。
ActiveAdmin以相同的方式解决了此问题。
如果你真的不想使用News,那么你可以用它后缀Item,Entry,Object,或类似的话。这将为您提供NewsItem带有news_item_path和的模型news_items_path。
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |