2017-10-09 46 views
1

在我的Rails应用程序中,创建新记录后得到最后一笔费用记录的重复,但我想在重复数为:description_other,“”时排除一个属性。在Rails中复制记录除了一个属性?

expenses_controller.rb

class ExpensesController < ApplicationController 

# GET /expenses/new 
    def new 
    if Expense.last.present? 
     @expense = Expense.last.dup 
    else 
     @expense = Expense.new 
    end 
    end 

def expense_params 
     params.require(:expense).permit(:date, :description, :description_other, :trips, :fare, :credit) 
    end 
end 

_form.html.erb

<div class="row"> 
    <div class="col-md-3 col-md-offset-4"> 

    <%= form_for(@expense) do |f| %> 

    <div class="form-group"> 
    <%= f.label :date %><br> 
    <span class="datetime"><%= f.date_select :date %></span> 
    </div> 

    <div class="form-group"> 
     <%= f.label :credit %><br> 
     <%= f.text_field :credit, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :description %><br> 
    <%= f.select(:description, options_for_select([['PLEASE SELECT...', ''],['METRO', 'METRO'], ['BUS', 'BUS'], ['TAXI', 'TAXI'], ['OTHERS', 'OTHERS'], ['FOOTLOOSE', 'FOOTLOOSE']]), {}, {class: "form-control", id: "expense_description"}) %> 
    <br> 
    <div id="otherDesc"> 
    <%= f.text_field :description_other, class: "form-control" %> 
    </div> 
</div> 

    <div class="form-group"> 
    <%= f.label :trips %><br> 
    <%= f.number_field :trips, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :fare %><br> 
    <%= f.text_field :fare, class: "form-control" %> 
    </div> 

    <br> 
    <div style="margin-left: 70px;" class="form-group"> 
    <%= f.submit @expense.new_record? ? "Create Expense" : "Update Expense", class: "btn btn-lg btn-primary" %> 
    </div> 

    <% end %> 

</div> 
</div> 

我都试过,但无法得到期望的结果。

任何建议是最受欢迎的。

预先感谢您。

回答

1

您应该添加

<div id="otherDesc"> 
<%= f.text_field :description_other, class: "form-control", value: " "%> 
</div> 
+0

好极了!它正在按预期工作,而且更少的修改。 –

+0

@MuhammadYaseen它不会工作兄弟。什么是第一次费用创作。我将填补其他Desc字段零 – krishnar

1

使用自来水,然后通过设置排除属性零

def new 
    if Expense.last.present? 
    # exclude here 
    @expense = Expense.last.dup.tap do | exp | 
        exp.description_other = nil 
       end 
    else 
    @expense = Expense.new 
    end 
end 
+0

感谢您的答复。我得到的功能工作,但当我创建一个新的开支,它指向更新行动。 –

+0

@MuhammadYaseen因为费用对象已经存在。 – krishnar

+0

@MuhammadYaseen你期待什么?只打创建动作? – krishnar

相关问题