在临时点击前端编辑记录 - rails 4.2

时间:2016-08-18 19:27:19

标签: ruby-on-rails

实际上,我想在点击编辑链接时编辑相应的记录,但是暂时。

现在当我点击修改链接时,它会转到http://localhost:3000/aslani361s/1/edit并要求我更新记录,更新的记录会保存到数据库中。

我想要的是做同样的事情,但暂时我想要更改前端的记录值,以便知道运行的余额,并再次回到正常的语句而不修改记录值数据库中。

我想这样做是因为我们有时候客户会拿走他们一半的货物而剩下的一半货物仍未交付。所以我想知道扣除未交付货物金额后各自客户应支付的余额。

现在我只是用隐藏隐藏未交付的发票。

首先,我在您的控制台中输入以下内容来添加迁移:

rails g migration AddHiddenToAslani361s hidden:boolean

打开生成的迁移文件并更改以下行:

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

保存文件并运行迁移:

rake db:migrate

然后我添加了hide方法

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

上述功能运作正常,因为它隐藏了整个发票,其中包含未运送货物和运行余额。

如果部分商品未投放且部分商品已交付,我如何才能正常工作,因为我想隐藏未投放的部分并计算运行余额。

欢迎任何建议。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

Rails本身并没有这样做,但您可以使用像https://github.com/airblade/paper_trail这样的宝石来跟踪模型中的变化。

或者在您的情况下,只需在Rails中为您的模型添加taken_goods

答案 1 :(得分:0)

听起来每个记录(或line_item)都有一个状态,例如已发送或未发送。你想要总计那些没有交付的东西。只需更改列表中项目的状态,不要编辑订单本身。

您需要将此更改为put

resources :aslani361s do 
    member do 
        put :hide
    end
end

在索引操作中

def index
    @aslani361s = Aslani361.visible
end

在桌子的底部

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

将计算总余额。