2013-11-22 2 views
6

Я определил маршруты для определенного действия и создал ссылку. Я также создал соответствующие представления, но не создал код, определяющий метод действия контроллера. Тем не менее представление отображается при нажатии ссылки. Это представление отображается без фактического присутствия.рельсы 3 визуализация без действия

Любые объяснения?

ответ

5

Да, представление будет отображаться, даже если соответствующее действие отсутствует, оно будет работать, поскольку маршруты определены для них. Но это не очень хорошая практика!

+1

Затем, когда не определено действие, вызванное ошибкой срабатывания? Только если соответствующего представления нет? – AshwinKumarS

+3

@RSB, это может быть полезно при попытке визуализации статической страницы. – Virtual

+2

ошибка неопределенного действия возникает, когда страница не статична, я согласен с @Virtual – RSB

1

Rails не ожидает, что вы определите действие контроллера для каждого маршрута в вашем файле config/routes.rb. Как вы, наверное, знаете, вы можете определить действие, а также оставить его пустым, как так:

class PostsController < ApplicationController 

    def index 
    end 

end 

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

3

Чтобы Rails отображал представление, вам необходимо определить контроллер (необязательно с соответствующим методом), маршрут, который ссылается на представление и представление. Добавление метода к контроллеру необходимо только в том случае, если вам необходимо предоставить данные для представления.

Там довольно подробное объяснение этого в http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action

0

Даже если определить фильтры для этого действия, он будет также выполнять независимо от того, есть ли у вас определенные действия или нет, и как Глен упоминается через его связь рельсы автоматически отображает то же имя, что и действие внутри папки с именем контроллера (которое присутствует в папке представлений).

Пустое действие эквивалентно никакому действию, но предписано определить действие по некоторым причинам (например, понятным и ремонтопригодным).

Ссылка: здесь, в этом link говорит

Обратите внимание, что пустой метод из примера выше будет работать нормально, потому что Rails по умолчанию будет оказывать вид new.html.erb если действие не говорит иначе

Следовательно, явный HTTP-ответ определяется, если вам нужно изменить ответ по умолчанию.

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