2015-02-19 4 views
0

Я пытаюсь понять этот код с сайта Codecademy по:Как здесь используется `get`?

Rails.application.routes.draw do 
    get '/' => 'pages#home' 

    resources :categories 
    get 'categories/:id/delete' => 'categories#delete', :as => :categories_delete 
end 

Это файл routes.rb, и код первого указания, что это объект приложения Rails, то он называет три метода обратно-to обратно! то есть application, routes и draw. Я интерпретирую их как методы из-за синтаксиса периода, но только рисую звуки как метод.

Затем он использует get, чтобы указать, что корень приложения, то есть когда приложение открыто, должно перейти на домашнюю страницу. Я не уверен, почему эта строка написана хешем pages#home.

Затем мы вызываем resources, который служит создателем маршрута. Мы указываем маршрут по символу :categories.

Получаем, что означает символ categories_delete. Но что означает этот другой синтаксис?

get 'categories/:id/delete' => 'categories#delete', :as => . . . 
+0

Возможно, вы захотите ознакомиться с документами маршрутизации Rails. –

ответ

0

Обычная номенклатура в рубиновом мире (он может исходить от других языков, я не знаю), чтобы написать методы экземпляра, как ClassName#instance_method_name, это же стенограмма была позаимствована для использования в Rails методы маршрутизации, кроме использования полного имени класса (которое было бы CategoriesController), они просто использовали нижнее имя контроллера без суффикса «Контроллер».

Таким образом, pages#home означает метод home в классе PagesController.

Окончательный get метод плохой форме, он создает маршрут, который позволяет исключить запись с помощью простого GET запроса на /categories/123/delete где 123 будет передан в CategoriesController в params[:id]

Вы можете найти гораздо больше о как все это работает в the excellent Rails Routing Guide.

0

За статью as in rails routes

Все это делает создать вспомогательный URL-адрес, так что:

get 'categories/:id/delete' => 'categories#delete', :as => :category_delete

генерирует 2 метода

category_delete_path 
category_delete_url 

Единственное различие между ними состоит в том, что URL добавляет хост и порт.


К сожалению для редактирования, полностью облажался ссылка на этот URL

0

прибудет - это HTTP Verb, можно сказать, как метод HTTP в зависимости от действия вы выполняете при создании действия будет пост, на обновлении будет поставлен

: в качестве опции позволяет переопределить нормальное именование для названных маршрутов хелперов так categories#index вы можете сказать, как categories_path categories#delete как categories_delete

categories/:id/delete это вызывает категорию контроллер и удалить это действие, и идентификатор может быть доступен как params[:id] контроллера для delete записи с этим идентификатором

0

Просто добавить пару пунктов к ответам, которые уже были размещены.

Он называет три метода обратными к спине! то есть application, routes и draw. Я интерпретируя их как методы из-за синтаксис периода, но только рисовать звуки как метод

Это правильно, эти 3 метода в цепи с каждым вызываемыми методом значения, возвращенным из предыдущего метода. В Ruby часто существует соглашение, чтобы сохранить имена методов довольно краткими, например. Rails.application вернуть объект приложения в предпочтении к чему-то вроде Rails.get_application

Мы «получение» безотносительно символ categories_delete указывает. Но что же означает этот другой синтаксис?

get 'categories/:id/delete'

Этот get метод не получает значение, это определение маршрута для запросов, которые используют метод HTTP GET. Что здесь происходит, так это то, что для определения маршрутов используется внутренний язык домена. то есть код Ruby используется для определения маршрутов, но методы для его поддержки называются таким образом, чтобы они воспринимались как язык конфигурации для определения маршрутов.

например. get 'categories/:id/delete' => 'categories#delete' вместо метода, такого как define_route(http_method, path, action)

Смежные вопросы