-1
我試圖從會話哈希中刪除一個id。我能夠將id推送到session[]
,但現在當我嘗試從散列中刪除它時,它會從camp.rb模型中全部刪除id。我用腳手架創建了這個應用程序。有什麼建議?從會話哈希中刪除id Ruby on Rails
MODEL - cart.rb
class Cart
def initialize(array_of_camp_ids = [])
@camp_ids = array_of_camp_ids
end
def camps
Camp.where(id: @camp_ids)
end
_____________________________________________________________________
applicaition_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :set_cart
private
def set_cart
session[:cart] ||= []
@cart = Cart.new(session[:cart])
end
end
_____________________________________________________________________
cart_controller.rb
def add_to_compare
session[:cart] << @camp.id
redirect_to '/compare'
end
_____________________________________________________________________
VIEW - camps.html.rb
<p>
<strong>Name:</strong>
<%= @camp.name %>
</p>
<p>
<%= form_tag(action: "add_to_compare") do %>
<%= hidden_field :camp_id, value: @camp.id %>
<%= submit_tag "Add to comparison cart" %>
<% end %>
</p>
_____________________________________________________________________
VIEW - cart.html.erb
<tbody>
<% @cart.camps.each do |camp| %>
<tr>
<td><%= camp.name %></td>
<td><%= link_to 'remove', camp, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<tr>
<% end %>
</tbody>
嗨乍得, 謝謝你的迴應。我對RoR比較陌生。我會在哪裏放置這個?作爲我的購物車控制器或購物車視圖上的新動作?我嘗試了兩種,但我想我保存錯了。 – Dorian
如果您只是想從會話中刪除它,而不是數據庫,則可以更改購物車控制器的銷燬操作來完成我所說的操作。 –