rails flash.现在从部分开始



我有一个控制器,应该显示一个flash消息。没有显示flash消息。我唯一的问题是闪光信息没有显示。如果有人能对此给出一个解释,那就太棒了。我猜我的错误是微不足道的,但我不知道足够的解释发生了什么。

编辑:我为这一节添加了我的日志

编辑:当我点击无效信息的管理按钮时,什么都没有发生。当我刷新页面的flash消息显示。我真的只需要刷新当前页面,但它不工作。如果有人有任何想法,请分享。

编辑:我试过改变事情redirect_to @department, :notice => "invalid Password"

我仍然不能得到闪光消息显示。

编辑:从这个站点它说flash现在将显示在您正在渲染的视图中。但我渲染的视图是局部的。谁能至少让我知道我是否在正确的轨道上。除了我自己的想法之外,还有一点方向或想法吗?

这是我的关系的创建方法。

def create
    @department = Department.find(params[:manager_relationship][:department_id])
    if @department.authenticate(params[:manager_relationship][:password])
    current_user.manage!(@department)
    respond_to do |format|
        format.html { redirect_to @department }
        format.js
        end
    else
        redirect_to department_path@department, :alert => "Invalid Password"
    end
end

相同的代码在我的会话控制器中成功使用。

SessionsController
if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_back_or user
    else
        flash.now[:error] = 'Invalid email/password combination'
        render 'new'
    end

从局部

调用

部门/show.hmtl.erb

<% provide(:title, @department.department_name) %>
<div class="span8">
    <%= render 'manage_form' if signed_in? %>
</div>

_manage_form.html.erb

<div id="manage_form">
<% if current_user.managing?(@department) %>
<%= render 'unmanage' %>
<% else %>
<%= render 'manage' %>
<% end %>
</div>

_manage.html.erb

<%= form_for(current_user.manager_relationships.build(department_id: @department.id), remote: true) do |f| %>
    <div>
    <%= f.label :password %>
    <%= f.password_field :password %>
    </div>
    <div><%= f.hidden_field :department_id %></div>
    <%= f.submit "Manage department", class: "btn btn-large btn-primary" %>
<% end %>

application.html.erb

<!DOCTYPE html>
<html>
<head>
.
.
.
...
<body>
<%= render 'layouts/header' %>
<div class="container">
  <% flash.each do |key, value| %>
    <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
  <%= yield %>
  <%= render 'layouts/footer' %>
</div>

这是一个unmanage和manage http请求的日志

Started DELETE "/manager_relationships/22" for 127.0.0.1 at 2013-03-24 11:08:20 -0700
Processing by ManagerRelationshipsController#destroy as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Y3I7qY4LBfChjdYAUlJ1eDh23YkcJRwSRfa6s2wavoI=", "commit"=>"Unmanage", "id"=>"22"}
[1m[36mUser Load (0.0ms)[0m  [1mSELECT "users".* FROM "users" WHERE "users"."remember_token" = '9J1RAJy16Tooz5wMmzQohw' LIMIT 1[0m
     [1m[35mManagerRelationship Load (0.0ms)[0m  SELECT "manager_relationships".* FROM "manager_relationships" WHERE "manager_relationships"."id" = ? LIMIT 1  [["id", "22"]]
[1m[36mDepartment Load (1.0ms)[0m  [1mSELECT "department".* FROM "departments" WHERE "department"."id" = 1 LIMIT 1[0m
[1m[35mManagerRelationship Load (0.0ms)[0m  SELECT "manager_relationships".* FROM "manager_relationships" WHERE "manager_relationships"."user_id" = 1 AND "manager_relationships"."department_id" = 1 LIMIT 1
[1m[36m (0.0ms)[0m  [1mbegin transaction[0m
[1m[35mSQL (0.0ms)[0m  DELETE FROM "manager_relationships" WHERE "manager_relationships"."id" = ?      [["id", 22]]
[1m[36m (26.0ms)[0m  [1mcommit transaction[0m
Rendered departments/_manage.html.erb (2.0ms)
Rendered manager_relationships/destroy.js.erb (5.0ms)
Completed 200 OK in 86ms (Views: 11.0ms | ActiveRecord: 27.0ms)

Started POST "/manager_relationships" for 127.0.0.1 at 2013-03-24 11:08:23 -0700
Processing by ManagerRelationshipsController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Y3I7qY4LBfChjdYAUlJ1eDh23YkcJRwSRfa6s2wavoI=",     "manager_relationship"=>{"password"=>"[FILTERED]", "department_id"=>"1"}, "commit"=>"Manage Bar"}
[1m[35mUser Load (0.0ms)[0m  SELECT "users".* FROM "users" WHERE "users"."remember_token" =     '9J1RAJy16Tooz5wMmzQohw' LIMIT 1
[1m[36mDepartment Load (0.0ms)[0m  [1mSELECT "departments".* FROM "departments" WHERE "departments"."id" = ? LIMIT 1[0m      [["id", "1"]]
Redirected to http://localhost:3000/departments/1
Completed 406 Not Acceptable in 91ms (ActiveRecord: 0.0ms)

首先,我无法在视图中看到你在哪里显示flash。您应该在希望显示消息的视图中执行如下操作:

<% if flash[:success] %>
  <p>
   <%= flash[:success] %>
  </p>
<% end %>
<% if flash[:error] %>
  <p>
   <%= flash[:error] %>
  </p>
<% end %>

第二,当你做重定向时,你应该使用flash[:success] = 'message'而不是flash.now[:success]。使用flash.now是您不重定向用户,而只是呈现视图。

最新更新