Ruby on rails 在Rails中呈现页面后保留局部变量值
我正在尝试使用rails创建一个页面。在此页面中,用户可以从页面中可用的列表中选择项目,并且他需要能够查看所选的所有项目。为此,我创建了以下控制器和视图:Ruby on rails 在Rails中呈现页面后保留局部变量值,ruby-on-rails,ruby,model-view-controller,web,Ruby On Rails,Ruby,Model View Controller,Web,我正在尝试使用rails创建一个页面。在此页面中,用户可以从页面中可用的列表中选择项目,并且他需要能够查看所选的所有项目。为此,我创建了以下控制器和视图: class PropostasController < ApplicationController def new @id_item = params[:id_item] end def ofertar @itens = Item.where(dono_id: session[:id_usuario])
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 !@itens_ofertados
@itens_ofertados = []
end
@itens_ofertados.push(Item.find(params[:id_item]))
render "new"
end
end
类建议控制器
看法
Nova Proposta
变现人提议第
通常情况下,我们会接受提议
它有一系列的程序:
奥弗塔多斯酒店
- “260x180”)%%>
它是一个系列的自交系
- “260x180”)%%>
我遇到的问题是,当我单击其中一种视图形式的submit按钮时,我丢失了@itens\u of ertados和@itens中的值。我希望重新呈现页面或刷新页面,而不会丢失这些变量的以前值,以便它们继续出现在页面中。
@itens\u of ertados
不是局部变量。它是控制器的一个实例变量
对于每个HTTP请求,Rails实例化一个新的控制器实例来处理该请求。当请求处理完成时,控制器实例死亡。因此,前一个控制器实例变量的值不可访问,因为该控制器实例已不存在
最好的解决方案是将历史记录存储在浏览器的本地存储中。谢谢您的回答,很抱歉我犯了错误,我对rails没有太多经验。要存储在浏览器的内存中,我需要存储在会话中,还是需要其他资源来存储?会话可以,因为Rails的默认会话存储在cookie中。但是,您应该始终记住,cookie只能保存4KB的数据,它们会增加网络流量。我建议将这些数据存储在浏览器的本地存储器中,因为它的容量要大得多,而且永远不会传输到服务器。有关详细信息,请参阅。这是Javascript。
<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>