0
我試圖使用rails創建頁面。在此頁面中,用戶可以從頁面中可用的列表中選擇項目,並且他需要能夠查看他選擇的所有項目。要做到這一點,我創建了下面的控制器和視圖:在Rails中渲染頁面後保留局部變量值
class PropostasController < ApplicationController
def new
@id_item = params[:id_item]
end
def ofertar
@itens = Item.where(dono_id: session[:id_usuario])
render "new"
end
def adicionar_item
if [email protected]_ofertados
@itens_ofertados = []
end
@itens_ofertados.push(Item.find(params[:id_item]))
render "new"
end
end
視圖
<h1>Nova Proposta</h1>
<%= @id_item %>
<p>
Realizar proposta para:
</p>
<div>
Itens do usuário que receberá a proposta
</div>
<div>
Itens a serem ofertados:
<br>
<%= form_tag("/ofertar_item_proposta") do %>
<p>
<%= submit_tag "Ofertar Item" %>
</p>
<% end %>
</div>
<div>
<%= render "teste"%>
</div>
<div>
<br>
<h2>Itens ofertados</h2>
<%if @itens_ofertados %>
<% @itens_ofertados.each do |item| %>
<ul>
<li><%= item.nome %></li>
<li><%= item.descricao %></li>
<li><%= item.quantidade %></li>
<li><%= item.categoria.nome %></li>
<% if item.img_link %>
<li><%= image_tag(item.img_link, :size => "260x180") %></li>
<% end %>
</ul>
<% end %>
<% end %>
</div>
<div>
<br>
<h2>Itens a serem selecionados</h2>
<%if @itens %>
<% @itens.each do |item| %>
<%= form_tag("/adicionar_item_proposta") do %>
<ul>
<li><%= item.nome %></li>
<li><%= item.descricao %></li>
<li><%= item.quantidade %></li>
<li><%= item.categoria.nome %></li>
<% if item.img_link %>
<li><%= image_tag(item.img_link, :size => "260x180") %></li>
<% end %>
</ul>
<ul>
<%= hidden_field_tag 'id_item', item.id %>
<li><%= submit_tag 'Adicionar a Proposta' %></li>
</ul>
<% end %>
<% end %>
<% end %>
</div>
我遇到的問題是,當我點擊的視圖的形式之一的提交按鈕,我失去了@itens_ofertados和@itens中的值。我想重新渲染頁面或刷新它,而不會丟失這些變量的先前值,以便它們不斷顯示在頁面中。
謝謝你的回答,我很抱歉我的錯誤,我沒有太多的使用經驗。要存儲在瀏覽器的內存中,是否需要在會話中存儲或者是否有其他資源來執行此操作? –
會話正常,因爲Rails的默認會話存儲位於Cookie中。但是您應該始終記住,Cookie只能保存4KB的數據,並且它們會累加到網絡流量中。我建議將這些數據存儲在瀏覽器的本地存儲中,因爲它具有更大的容量,並且永遠不會傳輸到服務器。 – Aetherus
有關詳細信息,請參見[本地存儲API](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)。它是Javascript。 – Aetherus