2016-08-18 24 views
0

實際上,我想在編輯鏈接被點擊但暫時編輯相應的記錄。暫時點擊前端編輯記錄 - 導軌4.2

現在,當我點擊編輯鏈接,它會帶我到http://localhost:3000/aslani361s/1/edit並要求我更新記錄,並將更新的記錄保存到數據庫。

我想要的是做同樣的事情,但暫時的基礎上,我想改變前端的記錄值,以便知道運行平衡,並再次返回到正常語句,而不修改記錄值數據庫。

我想這樣做是因爲我們已經有客戶有時他們拿走了他們一半的商品,剩下一半的商品仍然未交付。所以我想知道在扣除未交付商品金額後各個客戶應付的餘額。

現在我只是隱藏未交付的發票隱藏

rails g migration AddHiddenToAslani361s hidden:boolean 

打開生成的遷移文件,並更改以下行:

首先,我在您的控制檯中輸入這個附加遷移

add_column :aslani361s, :hidden, :boolean, :default => false 

保存的文件UND跑遷移:

rake db:migrate 

然後我添加了隱藏方法,

aslani361s_controller.rb

def hide 
     @aslani361 = Aslani361.find(params[:id]) 
     @aslani361.hide 
     flash[:notice] = 'Aslani361 was successfully hidden.' 
     redirect_to aslani361s_url  
    end 

_aslani361.html.erb

<tr class="tr-<%= cycle('odd', 'even') %>"> 

    <td class="col-1"><%= aslani361.date.strftime('%d/%m/%Y') %></td> 

    <td class="col-3"><%= span_with_possibly_red_color aslani361.description %></td> 


    <td class="col-1"><%= number_with_precision(aslani361.amount, :delimiter => ",", :precision => 2) %></td> 

    <td class="col-1 neg"><%= number_with_precision(aslani361.discount, :delimiter => ",", :precision => 2) %></td> 

    <td class="col-1 neg"><%= number_with_precision(aslani361.paid, :delimiter => ",", :precision => 2) %></td> 


    <% @balance += aslani361.amount.to_f - aslani361.discount.to_f - aslani361.paid.to_f %> 

    <% color = @balance >= 0 ? "pos" : "neg" %> 

    <td class="col-1 <%= color %>"><%= number_with_precision(@balance.abs, :delimiter => ",", :precision => 2) %></td> 

    <td class="col-1"><%= link_to "Hide", controller: "aslani361s", action: "hide", id: aslani361, method: :put %></td> 

</tr> 

index.html.erb

<% @balance = 0 %> 


<div class="row"> 

    <div class="col-md-10 col-md-offset-1"> 

     <div class="table-responsive myTable"> 

      <table id = "kola" class="table listing text-center"> 
       <thead> 
        <tr class="tr-head"> 
         <td>Date</td> 
         <td>Description</td> 
         <td>Amount</td> 
         <td>Discount</td> 
         <td>Paid</td> 
         <td>Balance</td> 
         <td>Hide</td> 
        </tr> 
       </thead>     
        <tbody>    
         <%= render @aslani361s %> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 

aslani361.rb

scope :visible, -> { where(hidden: false) } 
    # returns only visible xvaziri's 

    def hide 
    update_attribute(:hidden, true) 
    end 

scope :hidden, -> { where(hidden: true) } 

routes.rb

resources :aslani361s do 
     member do 
      get :hide 
     end 
    end 

上述功能正常工作,因爲它是通過運行餘額隱藏未送達商品的整個發票。

當部分商品未送達且部分商品送達時,我如何才能使用此功能,因爲我想隱藏未送達的部件並計算運行平衡。

任何建議是最受歡迎的。

預先感謝您。

回答

0

Rails本身並不這樣做,但您可以使用像https://github.com/airblade/paper_trail這樣的gem來跟蹤模型中的更改。

或者在你的情況下,只需將你的模型添加taken_goods到Rails中。

+0

感謝您的回覆。 –

+0

如何在模型中定義taken_goods? –

0

與每個記錄(或line_item)類似的聲音具有傳遞或未傳遞狀態。你想總計那些未交付的。只需更改列表中項目的狀態,不要編輯訂單本身。

你需要這種改變認沽

resources :aslani361s do 
    member do 
     put :hide 
    end 
end 

在索引操作

def index 
    @aslani361s = Aslani361.visible 
end 

在餐桌上

<%= @aslani361s.sum(:amount) - @aslani361s.sum(:discount) - @aslani361s.sum(:paid) %> 

的botttom將計算總餘額。

+0

感謝您的回覆。是的,我確實擁有已交付和未交付的記錄,但有時我們的交付將成爲部分內容,這就是爲什麼我要查找運行餘額(不包括部分未傳輸記錄)的原因。所以,如果我可以通過更改狀態來實現這一目標,我該如何繼續? –

+0

只需將一個狀態列添加到line_item即可。在計算總計時,使用範圍來查找所有未交貨的line_items,然後總結其價格。取決於你的訂單和訂單項模型是什麼 - 它會像'@ order.line_items.undelivered.sum(:price)' – Swards

+0

謝謝先生,我已更新我的文章,請看看,因爲我明確提到了什麼我有,我想要什麼? –