Как Вы называете метод от представления в направляющих?

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

9
задан James Dunn 8 August 2013 в 19:39
поделиться

4 ответа

Короче: Вы этого не делаете.

Вы делаете следующее:
Вы вызываете действие на контроллере. Для каждого действия существует соответствующее представление, например "say.html.erb" в каталоге views / home.
Чтобы вызвать это действие и отобразить соответствующее представление, вы можете сделать что-то вроде <% = link_to 'Say it',: controller => 'home',: action => 'say',: someadditionalparameter => 'foo '%> в вашем index.html.erb

Если вы хотите получить доступ к : someadditionalparameter в действии say , вы должны сделать это с помощью params [ : someadditionalparameter] и в этом случае получит 'foo' .

logger.error "hello"
17
ответ дан 4 December 2019 в 10:05
поделиться

в первую очередь вам нужно запустить приложение rails

. Для этого нужно перейти в корневой каталог приложения rails из командной строки, ввести

ruby script/server

, затем открыть браузер и ввести http://127.0.0.1:3000/home/say

Это должно указать вам на главную страницу контроллера, action say

Изменить: как говорили остальные люди, и я забыл упомянуть, что вам понадобится представление (файл по соглашению находится в app / views / CONTROLLER_NAME / ACTION_NAME.html.erb в вашем примере app / views / home / say.html.erb), если у вас нет такого в файле ваше действие не будет отображаться, и вы получите сообщение об ошибке.

0
ответ дан 4 December 2019 в 10:05
поделиться

Ну, представление обычно не вызывает контроллер - это происходит наоборот, насколько я знаю. Приходит запрос, Rails анализирует URL-адрес в соответствии с вашими маршрутами config / routes.rb и перенаправляет запрос соответствующему действию в соответствующем контроллере. По умолчанию Rails предоставляет маршрут для / controller_name / action_name, так что вы можете использовать его для простого возиться с тем, что Rails делает для вас.

После запуска контроллера Rails автоматически отображает связанное представление, которое по соглашению имеет то же имя, что и его действие. Автоматически используемое представление для вашего действия «say» в контроллере «home» можно найти в структуре каталогов в app / views / home / say.html.erb. Вы можете переопределить этот автоматический рендеринг представления, вызвав render в действии вашего контроллера, например render: template =>: index .

И, наконец, как сказал Константинос, вам необходимо запустите сервер, прежде чем вы сможете перейти на сайт в веб-браузере. По умолчанию это будет http://127.0.0.1:3000/ ; чтобы выполнить действие say домашнего контроллера, перейдите по адресу http://127.0.0.1:3000/home/say .

1
ответ дан 4 December 2019 в 10:05
поделиться

Вкратце: вы этого не делаете.

Что вы делаете:
Вы вызываете действие на контроллере. Для каждого действия существует соответствующее представление, например "say.html.erb" в каталоге views / home.
Чтобы вызвать это действие и отобразить соответствующее представление, вы можете сделать что-то вроде <% = link_to 'Say it',: controller => 'home',: action => 'say',: someadditionalparameter => 'foo '%> в вашем index.html.erb

Если вы хотите получить доступ к : someadditionalparameter в действии say , вы должны сделать это с помощью params [ : someadditionalparameter] и в этом случае получит 'foo' .

3
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: