Не удается добавить подстраницы в контроллере - PullRequest
0 голосов
/ 14 апреля 2011

Использование RoR 2.3.8

Это мой cities_controller.rb

class CitiesController < ApplicationController
  def show
    @city = City.find(params[:id])
    ...
  end

  def shops
    ...
  end

  def countries
    ...
  end
end

Вот мой routes.rb

map.resources :cities, :collection => {:shops => :get, :countries => :get}

URL show для каждогоid - это:

http://localhost/cities/1

Я хочу иметь некоторое содержимое shops и countries для каждого связанного id, которое я хочу:

http://localhost/cities/1/shops
http://localhost/cities/1/countries

Я могу 't страницы, показанные в пустом коде, в первую очередь.Что я сделал не так?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Опция :collection предназначена для случаев, когда вы хотите воздействовать на всю коллекцию - поэтому ваши маршруты будут отображаться как:

http://localhost/cities/shops
http://localhost/cities/countries

То, что вы хотите, это

map.resources :cities, :member => {:shops => :get, :countries => :get}

Ссылка: http://apidock.com/rails/ActionController/Resources/resources

0 голосов
/ 14 апреля 2011

Магазины и страны, вероятно, будут не методами в контроллере, а другими моделями.Вы бы хотели Countries.rb и Shops.rb

Затем вы бы вложили ресурсы типа

resources :cities do
     resources :shops
end

, и вам понадобится belongs_to :city в модели магазинов и has_many :shopsв модели городов, которая позволила бы вам получить доступ к городам / 1 / магазинам ... или что-то в этом роде

Однако подумайте о том, как структурированы данные, действительно ли страны принадлежат городам (при вложении ресурсовподразумевается) или страны будут содержать города.Вы бы хотели города belongs_to :country и так далее ...

Эта помощь?

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