2017-01-13 4 views
0

Also innerhalb der response_to blockiert die bedingte if stockUpdated and stock != {} schlägt fehl und der else Block läuft (Ich habe dies mit byebug getestet). Also sollte der Server umleiten, aber stattdessen rendert es. Eine andere seltsame Sache ist, dass seit der Wiedergabe der flash.now[:alert] -'...' funktionieren sollte, aber das auch nicht in der Ansicht angezeigt wird (nimm mein Wort dafür).Warum Rails 4 meine Sicht rendern, wenn ich redirect_to in einem response_to Block verwende

Controller:

respond_to do |format| 
     if stockUpdated and stock != {} 
      format.js 
      format.html { 
       redirect_to user_path(@user), 
       notice: "#{stock.symbol} has been added to your portfolio!" 
      } 
     else 
      flash.now[:alert] = "We could not add that stock to your portfolio." 
      format.html{redirect_to user_path(@user)} 
     end 
    end 

Server:

Started GET "https://stackoverflow.com/users/1" for ::1 at 2017-01-13 11:48:21 -0500 
Processing by UsersController#show as HTML 
Parameters: {"id"=>"1"} 
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]] 
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]] 
Stock Load (0.5ms) SELECT "stocks".* FROM "stocks" INNER JOIN "assets" ON "stocks"."id" = "assets"."stock_id" WHERE "assets"."user_id" = $1 [["user_id", 1]] 
Rendered stocks/_stock.html.erb (0.5ms) 
Rendered users/show.html.erb within layouts/application (13.7ms) 
Completed 200 OK in 92ms (Views: 81.6ms | ActiveRecord: 2.0ms) 
+0

Nur um zu klären: 'user_path (@user)' ist '/ Benutzer/1? Wenn ja, zeigt Ihr Serverprotokoll diese Route an (die umgeleitete Route). – mrlew

Antwort

1

Sie sollten and return nach der Umleitung hinzufügen:

respond_to do |format| 
    if stockUpdated and stock != {} 
    format.js 
    format.html { 
     redirect_to user_path(@user), notice: "#{stock.symbol} has been added to your portfolio!" 
    } 
    else 
    format.html{ 
     redirect_to user_path(@user), flash: {alert: "We could not add that stock to your portfolio."} and return 
    } 
    end 
end 
+0

Das hat funktioniert! Aber warum funktioniert Flash nicht? –

Verwandte Themen