控制器之间的交互

时间:2011-10-29 15:47:04

标签: ruby-on-rails-3 model-view-controller

在我的网络应用程序中,我有一个名为welcome.html.erb的页面控制器中的登录页面

其中有一个简单的登录表单和一个简单的注册表单,两者都在同一页面上。

如果用户注册了错误的凭据(如密码确认错误或密码长度等),则处理此问题的控制器是用户控制器中的新方法。

在新方法中,它检查是否创建了用户,如果不是,我希望它返回到Pages Controller中的welcome方法,并将用户创建过程中创建的错误传递给它。

似乎如果我做了

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 个答案:

答案 0 :(得分:1)

redirect_to welcome_path

(或者无论实际路径是什么。)

答案 1 :(得分:0)

来自我控制的用户控制器

闪光[:错误] = @ 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 %>

现在解决了这个问题..