【发布时间】:2018-03-06 01:30:38
【问题描述】:
_form.html.erb
<div class="form-group">
<%= f.label :description %><br>
<%= f.select(:description, options_for_select([['', ''],['METRO', 'METRO'], ['BUS', 'BUS'], ['TAXI', 'TAXI'], ['OTHERS', 'OTHERS']]), {}, {class: "form-control", id: "expense_description"}) %>
<br>
<div id="otherDesc">
<%= f.text_field :description_other, class: "form-control" %>
</div>
</div>
index.html.erb
<% @expenses.each do |expense| %>
<tr class="tr-<%= cycle('odd', 'even') %>">
<td class="col-1"><%= (expense.description_other.present? ? expense.description_other : expense.description) %></td>
</tr>
<% end %>
expenses_controller.rb
class ExpensesController < ApplicationController
before_action :set_expense, only: [:show, :edit, :update, :destroy]
# GET /expenses
# GET /expenses.json
def index
@expenses = Expense.all
end
# GET /expenses/1
# GET /expenses/1.json
def show
end
# GET /expenses/new
def new
if Expense.last.present?
@expense = Expense.last.dup
else
@expense = Expense.new
end
end
# GET /expenses/1/edit
def edit
end
# POST /expenses
# POST /expenses.json
def create
@expense = Expense.new(expense_params)
respond_to do |format|
if @expense.save
format.html { redirect_to @expense, notice: 'Expense was successfully created.' }
format.json { render :show, status: :created, location: @expense }
else
format.html { render :new }
format.json { render json: @expense.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /expenses/1
# PATCH/PUT /expenses/1.json
def update
respond_to do |format|
if @expense.update(expense_params)
format.html { redirect_to @expense, notice: 'Expense was successfully updated.' }
format.json { render :show, status: :ok, location: @expense }
else
format.html { render :edit }
format.json { render json: @expense.errors, status: :unprocessable_entity }
end
end
end
# DELETE /expenses/1
# DELETE /expenses/1.json
def destroy
@expense.destroy
respond_to do |format|
format.html { redirect_to expenses_url, notice: 'Expense was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_expense
@expense = Expense.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def expense_params
params.require(:expense).permit(:description, :description_other)
end
end
expense.js
$(document).ready(function () {
$('#expense_description').on('change',function(){
var selectedValue = $(this).val();
selectedValue == "OTHERS" ? $("#otherDesc").show() : $("#otherDesc").hide()
});
});
general.scss
#otherDesc {
display:none;
}
一切正常,除了我的索引页面,我为“其他”选择的选项获得了两个值,即“其他”+“我自己的描述”。例如在图像中它是 OTHERS WHITE GLUE。但我希望只有 WHITE GLUE 作为描述。
我太努力了,但没有得到想要的结果。
欢迎提出任何建议。
提前谢谢你。
【问题讨论】:
-
这个应该很容易适应...stackoverflow.com/questions/31291645/…如果您需要更多详细信息,您只需转到 Jquery 文档页面即可。
-
聊天中的每个 convo - 这是一个演示如何向表单添加字段的问题 - 这里的代码位于我给你的上一个链接中“触发”“锚”的代码中...stackoverflow.com/questions/6099301/…
-
这是一个有用的教程,它将引导您了解理论(它的错误版本,但告诉您如何进行该过程)。您必须编写自己的条件进行测试。 rubyplus.com/articles/…
-
如果你将
<td class="col-1"><%= expense.description %>&nbsp包装在一个条件中,如果<%= link_to expense.description_other,{}, {:style => 'color: #CC3366'} %>显示它就不会显示会发生什么? -
我添加了控制器,希望您拥有这里需要的几乎所有代码。
标签: javascript jquery ruby-on-rails-4