部分配列が初めてレンダリングされるときに、セッション配列の最後の値がフロントエンドに表示されないという奇妙な問題が発生します。私は、add_to_boxメソッドを使用して、 'session [:box]'というセッション変数に一連の値を追加しています。私はフロントエンドの部分を新しい値リストで更新したいと思っています。ここで Ruby on Railsセッション変数が最初のレンダリングでフロントエンドに表示されない
は(少し消毒)コード...だコントローラー:
def add_to_box(values_hash)
session[:box] ||= []
if params_valid?(values_hash)
session[:box].push(values_hash)
respond_to do |format|
format.js
end
end
end
add_to_box.js.erb:
$("#box").html("<%= escape_javascript(render partial: 'box') %>");
部分_box.html.erb:
<ul>
<% session[:box].each do |m| %>
<li>
<%= "#{m['bottom_id']}, #{m['filling_id']}, #{m['top_id']}" %>
</li>
<% end %>
</ul>
コンソール出力:
Started POST "/things/add_to_box" for ::1 at 2016-08-09 11:59:23 +0100
Processing by ThingController#add_to_box as JS
Rendered things/_box.html.erb (0.9ms)
Rendered things/add_to_box.js.erb (2.8ms)
Completed 200 OK in 17ms (Views: 8.2ms | ActiveRecord: 0.7ms)
方法は、(値1,1,1)、フロントエンド・ディスプレイと呼ばれる最初の時間:
∙、
方法である第二の時間をフロントエンド・ディスプレイは、(2,2,2値)と呼ばれるとおり
∙1、1、1
∙、
メソッドが呼ばれる第三の時間(値3,3,3)、フロントエンド・ディスプレイとして:
∙1、1、1
∙2、2、2
∙、
あなたが画像を取得します... Essentiall y最新の値はレンダリングされません。
しかし、私はページを更新する場合、それはすべての値を正しく示しています
∙1、1、1
∙2、2、2
∙3、3、3
私は最初に値が保存されず、レンダリングが最初に起こっていると思っていましたが、hの前に新しい値のセットがあることをどうやって知っていますか?アベニューが設定されている?