2015-06-20 66 views
-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> 

回答

0

您的link_to正在調用您的購物車控制器上的銷燬操作。這將默認從數據庫中刪除它。如果你不想這樣做,你可以做​​。

+0

嗨乍得, 謝謝你的迴應。我對RoR比較陌生。我會在哪裏放置這個?作爲我的購物車控制器或購物車視圖上的新動作?我嘗試了兩種,但我想我保存錯了。 – Dorian

+0

如果您只是想從會話中刪除它,而不是數據庫,則可以更改購物車控制器的銷燬操作來完成我所說的操作。 –