Rails:Flash消息不会出现在任何地方

时间:2013-07-18 10:56:46

标签: ruby-on-rails ruby-on-rails-3 notifications

所以我想说我有这样的代码:

class PostsController < InheritedResources::Base 
  # Add before_filter here and devise should handle the redirection if the user is not signed in.
  before_filter :authenticate_user!, only: [:vote_up]

  def vote_up
  begin
  current_user.vote_for(@post = Post.find(params[:id]))
  redirect_to [@post]
  flash[:success] = "You have voted successfully"
rescue ActiveRecord::RecordInvalid
  redirect_to [@post]
  flash[:error] =  "You have already voted"
  end
 end

end

正在显示“您已成功投票”或“您已投票”的消息。

在我看来,我有:

enter code here

<p id="notice"><%= notice %></p>
    <%= @post.embed .html_safe %>
    <header>
        <h7><%= @post.name %></h7>
    </header>
<h8><%= @post.title %></h8>
<article>
<%= @post.content .html_safe %>

<p>
<%= link_to 'Back', posts_path %> |
<%= link_to('Vote for this song!', vote_up_post_path(@post), :method => :post) %></p>

<p><id="notice"><%= notice %></p>

没有骰子。我仍然没有在任何地方收到flash消息。知道我做错了吗?

4 个答案:

答案 0 :(得分:2)

您已使用

flash[:success] = "You have voted successfully"

在您的控制器中,您已拨打

<%= notice %>

在您的观点中。您必须在控制器或视图中进行更改。

您可以添加

format.html {redirect_to @post,请注意:'您已成功投票。' }

在您的控制器中,您将收到所需的消息。

答案 1 :(得分:1)

您应该在flash

之前设置redirect_to

在你看来

<p>
  <%= flash[:success] unless flash[:success].blank? %>
  <%= flash[:error] unless flash[:error].blank? %>
</p>

您也可以查看此link

答案 2 :(得分:0)

最好的方法

<% if flash[:notice] %>
    <div class="notice"><%= flash[:notice] %></div>
<% end %>

答案 3 :(得分:0)

您的代码如下:<p><id="notice"><%= notice %></p>

您需要<p id="notice"><%= notice %></p>