Rails, устанавливающий переменную экземпляра из представления для контроллера - PullRequest
0 голосов
/ 04 марта 2011

Я пытаюсь установить переменную экземпляра из контроллера в представлении. Например:

class UsersController

def new
  @admincheck = false
end

в поле зрения: home.html.erb

<%= link_to "Sign up", signup_path, @admincheck => true, :class => "signup_button round" %>

с установкой для @admincheck значения true в представлении, будет ли UsersController реагировать на это, получая значение @admincheck, равное true?

Я не уверен, можете ли вы назначить значения переменных экземпляра в представлении для использования контроллером. Спасибо

Ответы [ 4 ]

1 голос
/ 20 марта 2011

Вы не можете установить переменную экземпляра из представления для контроллера.Подумайте о цикле ответа на запрос:

Браузер -> Запрос -> Контроллер -> Просмотр -> Ответ -> Браузер

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

1 голос
/ 04 марта 2011

Попробуйте использовать Фильтры для обработки подобных вещей.Это не должно быть обязанностью представления обрабатывать решение об аутентификации для следующего запроса.

Что вы хотите точно сделать?

1 голос
/ 04 марта 2011

Вы должны просто сделать что-то вроде этого:

<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>

Тогда в вашем контроллере вы можете получить admincheck как @admincheck = params[:admincheck]

1 голос
/ 04 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...