Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 重定向到其他url后呈现部分模板_Ajax_Json_Ruby On Rails 4_Model View Controller_Renderpartial - Fatal编程技术网

Ajax 重定向到其他url后呈现部分模板

Ajax 重定向到其他url后呈现部分模板,ajax,json,ruby-on-rails-4,model-view-controller,renderpartial,Ajax,Json,Ruby On Rails 4,Model View Controller,Renderpartial,我的目标是在用户创建新帐户并重定向到其个人资料页面后,为用户显示欢迎消息;i、 例如,将信息显示在他们的个人资料页面上 使用下面的代码,我能够显示消息,但仅在重定向发生之前的一瞬间显示,尽管如此,这还是成功的 在控制器中,我创建消息并使用Ajax调用呈现JavaScript模板: def create_user # ... @welcome_msg = "WELCOME" format.js { render template: "layouts/message.js.e

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

使用下面的代码,我能够显示消息,但仅在重定向发生之前的一瞬间显示,尽管如此,这还是成功的

在控制器中,我创建消息并使用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_msg %>
<div id="welcome_message_placeholder"></div>
<% if custom_notice %>
    <%= render partial: "layouts/welcome_message" %>
<% end %>
<%= custom_notice %>
$(window.location.replace(“”);
$(“#欢迎消息_占位符”).html(@user,:welcome_msg=>@welcome_msg}%>”;
\u欢迎\u message.html.erb

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

application.html.erb

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


我需要添加/更改什么以确保用户仅在被重定向后才能看到消息?

结果表明,实现这一点的一种方法与我上面提到的方法略有不同

我所做的(谢天谢地)是在我的
users
控制器中创建了一个新的
flash
类型,然后在我的所有控制器中定义它(以避免在我的应用程序模板中未定义它),如下所示:

现在,消息基本上可以在基本模板中被视为传统的
通知
,部分内容可以直接呈现(无需JS模板中间人):

application.html.erb

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

\u欢迎\u message.html.erb

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


请注意,Rails 3不支持添加flash类型(注册自定义flash类型)。

在重定向页面上显示欢迎消息,并确定用户是否是新创建的,显示消息。