0

フラッシュメッセージを表示するはずのコントローラーがあります。フラッシュ メッセージが表示されない。私の唯一の問題は、フラッシュ メッセージが表示されないことです。誰かがこれについて説明できれば、それは素晴らしいことです。私のエラーは初心者だと思いますが、何が起こっているのかを説明するのに十分ではありません。

編集:このセクションのログを追加しました

編集:無効な情報で管理ボタンをクリックしても何も起こりません。ページを更新すると、フラッシュ メッセージが表示されます。現在のページを更新する必要があるだけですが、機能していません。誰かがアイデアを持っている場合は、それらを共有してください。

編集:私は物事をに変更しようとしました redirect_to @department, :notice => "invalid Password"

まだフラッシュ メッセージを表示できません。

編集:このサイトから、レンダリングしているビューにフラッシュが表示されるようになると書かれています。しかし、レンダリングされたビューは部分的です。私が正しい軌道に乗っているかどうか、少なくとも誰かに知らせてもらえますか。自分以外のちょっとした方向性や考え?

これは私の関係の create メソッドです。

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>

これは、管理解除および管理 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)
4

1 に答える 1

1

まず、あなたのビューでフラッシュをどこに表示するかわかりません。メッセージを表示したいビューで、次のようにする必要があります。

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

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

次に、リダイレクトを行うときは、flash[:success] = 'message'代わりにflash.now[:success]. ユーザーをリダイレクトするflash.nowのではなく、ビューをレンダリングするだけです。

于 2013-03-24T04:49:34.710 に答える