【发布时间】:2014-06-20 04:56:19
【问题描述】:
我有一个带有 2 个日期字段和 1 个整数的 form_for。
- :开始,id:“开始”
- :结束,id:“结束”
- :number_of_days, id: "number_of_days"
我的js:
$(document).ready(function(){
$("#start, #end").on('change', function () {
var start = $('#start').datepicker('getDate');
var end = $('#end').datepicker('getDate');
var duration = (end.getDate() - start.getDate())/1000/60/60/24;
$("#number_of_days").val(duration);
});
});
变量“duration”的值在表单的 :number_of_days 字段中显示得很好,但是 在提交时如何继续将生成的 :number_of_days 传递给控制器表格?
谢谢
编辑: form_for:
<%= form_for(@vacation) do |f| %>
<div class="row">
<div class="large-2 columns"><%= f.label :start, "Starts On" %></div>
<div class="large-10 columns left"><%= f.text_field :start, data:{ type: 'date'}, id: 'start' %></div>
</div>
<div class="row">
<div class="large-2 columns"><%= f.label :end, "Ends On" %></div>
<div class="large-10 columns left"><%= f.text_field :end, id: 'end' %></div>
</div>
<div class="row">
<div class="large-2 columns"><%= f.label :number_of_days, "Duration In Days" %></div>
<div class="large-10 columns left"><%= f.text_field :number_of_days, disabled: true, id: 'number_of_days' %></div>
</div>
<div class="row">
<div class="large-10 large-offset-2 columns">
<%= f.submit nil, class: 'button small radius success' %>
</div>
</div>
<% end %>
控制器动作新建和创建:
def new
@vacation = Vacation.new
end
def create
@vacation = Vacation.new(vacation_params)
@vacation.user = current_user
@vacation.number_of_days = params[:number_of_days]
respond_to do |format|
if @vacation.save
format.html { redirect_to @vacation, notice: 'Vacation was successfully created.' }
else
format.html { render action: 'new'}
end
end
end
私下允许参数:
def vacation_params
params.require(:vacation).permit(:start, :number_of_days, :end)
end
【问题讨论】:
-
您可以尝试找出与 ruby 的区别...您已经拥有了吗?
-
在我的项目中实际上是要求在提交表单之前立即在指定的text_field中显示天数..
-
number_of_days 值是否不存在于控制器的 params 哈希中?
-
啊好吧!请问可以上传form_for代码吗?
-
如果你的意思是强大的参数,是的,它就在那里。但是当我通过 rails 控制台检查时,它显示为 nil。
标签: javascript jquery ruby-on-rails ruby ajax