1

所以假设我有这样的代码:

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>

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

4

4 回答 4

2

你用过

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

在您的控制器中,您已调用

<%= notice %>

在你看来。您必须在控制器或视图中进行更改。

你可以加

format.html { redirect_to @post, notice: '你已经投票成功。' }

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

于 2013-07-18T11:38:40.500 回答
1

你应该设置flash之前redirect_to

在你看来

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

您也可以查看此链接

于 2013-07-18T11:11:59.787 回答
0

最好的方法

<% if flash[:notice] %>
    <div class="notice"><%= flash[:notice] %></div>
<% end %>
于 2014-12-11T11:15:20.653 回答
0

你的代码是这样的:<p><id="notice"><%= notice %></p>

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

于 2017-07-08T10:18:57.737 回答