Взаимодействие между контроллерами - PullRequest
0 голосов
/ 29 октября 2011

В моем веб-приложении у меня есть страница входа в систему, которая находится в Контроллере страниц и называется welcome.html.erb

Внутри него есть простая форма для входа в систему и простая форма для регистрации, обе на одной странице.

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

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

Кажется, что если я сделаю

redirect_to root_path

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

Есть ли способ передать данные об ошибках в контроллер страниц?

Частичное для ошибки

<% if object.errors.any? %>

    <div id="error_explanation">
        <h2><%= pluralize(object.errors.count, "error") %> prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:</h2>
        <p>There were problems with the following fields:</p>
        <ul>
            <% object.errors.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
        </ul>
    </div>
<% end %>

Который я звоню, используя

<%= render 'shared/error_messages', :object => f.object %>

Ответы [ 2 ]

1 голос
/ 29 октября 2011
redirect_to welcome_path

(или каким бы ни был фактический путь.)

0 голосов
/ 30 октября 2011

Из контроллера Users я позвонил

flash [: errors] = @ user.errors, а затем изменил частичное значение на

<% if object.any? %>

    <div id="error_explanation">
        <h2><%= pluralize(object.count, "error") %> prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:</h2>
        <p>There were problems with the following fields:</p>
        <ul>
            <% object.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
        </ul>
    </div>
<% end %>

Который я вызвал с помощью

<%= render 'shared/error_messages', :object =>@user_errors %>

Это решило проблему на данный момент ..

...