Использование «news_path» для ресурса: news не работает с «Нет совпадений маршрутов {: action =>« show »,: controller =>« admin / news »} без необходимых ключей: [: id] ' - PullRequest
3 голосов
/ 13 марта 2011

Я реализую поддомен администратора и попытался найти ответ на этот вопрос, но я не нашел другого экземпляра.

Мои маршруты выглядят так для раздела поддоменов:

constraints :subdomain => 'admin' do
  scope :module => "admin" do

    resources :news, :events
    match 'news', :to => 'news#index', :as => 'news'

    root :to => "dashboard#index"
  end
end

События работают нормально, но по какой-то причине, чтобы новости работали, мне нужно добавить определенный маршрут, чтобы соответствовать ему. Может помочь показать частичное, где генерируется ошибка (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>

А затем ошибка, если я должен был удалить маршрут матча:

No route matches {:action=>"show", :controller=>"admin/news"} missing required keys: [:id]

Я просто понятия не имею, почему, какие мысли?

Ответы [ 2 ]

9 голосов
/ 13 марта 2011

Я обнаружил, что это проблема рельсов в том, что новости соглашения об именах не должны использоваться из-за проблем множественного числа, новости -> новые, поэтому мне пришлось вместо этого переименовать все в статьи.Надзор с моей стороны, немного глупый.

4 голосов
/ 28 декабря 2014

Причина, по которой Rails путается, заключается в том, что «новости» используются как в единственном, так и во множественном числе.news'.singularize дает newsnews.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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...