Как изменить маршруты в рубине на рельсах?

Обновить

November 2018

Просмотры

16.8k раз

8

Я только что установил Ruby On Rails и создал помост под названием posts. RoR генерироваться контроллеры и другие файлы , необходимые для меня.

Я создал новый метод в posts_controller, но я не могу получить доступ к нему. Я посмотрел на другие методы, которые в контроллере и выглядит , как мне нужно , чтобы получить к ним доступ /posts/[MY POST ID]/[MY METHOD NAME].

Если предположить , что я создал свой собственный метод helloв контроллере, как я к нему доступ?

Я посмотрел на routes.rb, но нет никакой настройки для него.

Обновлено:

Я понимаю , что я могу вручную настроить его routes.rb, но , как работают все другие методы? Например, у меня есть « edit» и « update» методы «в posts_controller.rb» контроллера. Как эти два метода работают без настройки маршрутов?

  # GET /posts/1/edit
  def edit
    @post = Post.find(params[:id])
  end

Я не могу найти конфигурацию , которая соответствует /posts/[0-9]/editшаблону.

5 ответы

6

Вам нужно добавить маршрут для него , чтобы routes.rb. Например:

# Previous routes
# resources :posts

# Updated routes
resources :posts do
  get "hello", :on => :member
end

Посмотрите на это Rails руководство о маршрутизации , это поможет вам понять Rails маршрутизации.

1

Когда вы использовали леску для создания поста, он добавил строку resources :postsв вашем routes.rbфайл. Эта линия настраивает маршруты для всех действий контроллера , которые были созданы. Как Калеб упоминает выше, не каждое действие имеет выделенный путь. Один путь может соответствовать нескольким действиям , потому что рельсы также учитывает метод HTTP. Так, например, путь /postsс помощью метода HTTP GETсоответствует действию контроллера index, в то время как тот же путь , с помощью метода HTTP PUTсоответствует действию контроллера update. Вы можете увидеть эти ассоциации при запуске rake routesиз консоли. Я согласен с Иорданией и Халева , что Rails Guides хорошо читать и поможет вам понять маршруты.

4

Это даст вам хороший старт на маршрутах: http://guides.rubyonrails.org/routing.html

Не каждый метод, который вы делаете, будет иметь свой собственный путь, рельсов построен по принципу покоя, и ваша леска создана методам в посте управления, которые следуют этим путям, как индекс, показать и т.д. ....

Вы можете заставить ваш метод, чтобы иметь маршрут добавил к нему, но на самом деле вы редко на самом деле нужно сделать так, следуя конвенции гораздо проще.

3

В Rails 3.x

match 'posts/hello' => 'posts#hello'

Доступный в example.com/posts/hello

9

В документации вы ищете является Rails маршрутизации с внешней стороны . После того, как вы читаете эти строки, вы поймете все , Rails делает , чтобы принять ваш запрос и указать его в метод в контроллере.