重定向到另一个 url 后呈现部分模板

Rendering partial template after redirect to another url

我的目标是在用户创建新帐户并重定向到他们的个人资料页面后向他们显示欢迎消息;即,将消息显示在他们的个人资料页面上。

使用以下代码,我能够显示消息,但只能显示一瞬间 - 在重定向发生之前,但仍然成功。

在我的控制器中,我创建了消息并使用 Ajax 调用来呈现我的 JavaScript 模板:

def create_user
    # ...
    @welcome_msg = "WELCOME"
    format.js { render template: "layouts/message.js.erb" }
    # ...
end

message.js.erb

$(window.location.replace("<%= profile_url %>"));
$("#welcome_message_placeholder").html("<%= j render partial: 'layouts/welcome_message', locals: { :user => @user, :welcome_msg =>  @welcome_msg } %>");

_welcome_message.html.erb

<%= @welcome_msg %>

application.html.erb

<div id="welcome_message_placeholder"></div>

我需要做什么才能add/change 确保用户仅在 被重定向后才能看到消息?

事实证明,执行此操作的一种方法与我上面的方法略有不同。

我所做的(幸运的是,我做了什么)是我在我的 users 控制器中创建了一个新的 flash 类型,然后我在我的所有控制器中定义了它(以避免它在我的应用程序模板)像这样:

add_flash_types :custom_notice # included in all controllers

def create_user
    # ...
    format.js {render js: "window.location.href='#{profile_url}'"} # to replace message.js.erb
    flash[:custom_notice]="WELCOME"
    # ...
end

现在消息本质上可以被视为基本模板中的传统notice,部分可以直接呈现(没有 JS 模板中间人):

application.html.erb

<% if custom_notice %>
    <%= render partial: "layouts/welcome_message" %>
<% end %>

_welcome_message.html.erb

<%= custom_notice %>

请注意,Rails 3.

不支持 add_flash_types(注册自定义 Flash 类型)