Во-первых, я думаю, важно отметить, что «стандартные методы» не являются ни стандартами, ни методами в некотором смысле.Это считается действиями, и они являются стандартными в том смысле, что они являются соглашениями, используемыми с лесами.Вы можете создать любое количество действий и логически сгруппировать их с помощью контроллера.
Если вы откроете [Project] /config/routes.rb и прочитаете комментарии, я думаю, что вы 'Я немного лучше пойму, как контроллеры и действия отображаются на конкретный маршрут.Например, вы можете создать именованный маршрут к действию входа в систему контроллера входа и вызвать его аутентификацию, добавив в начало ваших маршрутов. Rb:
# ex: http://localhost/authenticate
map.authenticate 'authenticate', :controller => 'login', :action => 'login'
# map.[route] '[pattern]', :controller => '[controller]', :action => '[action]'
# ex: http://localhost/category/1
map.category 'category/:id', :controller => 'categories', :action => 'list'
# ex: http://localhost/product_group/electronics
map.search 'product_group/:search', :controller => 'products', :action => 'list'
Чтобы частично ответить на ваш вопрос, вы можете рассмотретьдобавление модели категории и связывание всех продуктов с категорией.затем вы можете добавить именованный маршрут для просмотра элементов по категориям, как в приведенном выше блоке кода.
Основным преимуществом использования именованных маршрутов является то, что вы можете вызывать их в своих представлениях как category_url
или category_path
,Большинство людей не хотят этого делать и полагаются на сопоставления маршрутов по умолчанию (в конце route.rb):
# ex: http://localhost/category/view/1
map.connect ':controller/:action/:id'
# ex: http://localhost/category/view/1.xml
# ex: http://localhost/category/view/1.json
map.connect ':controller/:action/:id.:format'
Здесь важно упомянуть, что когда URI совпадает с маршрутомпараметр, соответствующий символу (: id или: search), передается в хэш params.Например, поиск по названному маршруту выше будет соответствовать поисковому запросу в params[:search]
, поэтому, если у ваших продуктов есть строковый столбец с именем 'type', по которому вы планируете искать, ваш контроллер продуктов может выглядеть так:
class Products < ApplicationController
def list
search_term = params[:search]
@products = Product.find(:all, :conditions => ["type = ?", search_term])
end
end
Тогда у представления [Project]/app/views/products/list.html.erb
будет прямой доступ к @products
Если вы действительно хотите углубленное представление о Ruby on Rails (за которым, вероятно, будет следовать в 10 раз легче, чемруководство по ссылке, которую вы разместили) вы должны проверить
Agile Web Development с Rails: второе издание, второе издание