我想写一组动态文本框比如 <%= f.label :no ,'编号'%> <%= f.text_field :no,:value => nextno(Time.now.to_s[0,10])%>
<%= f.label :reqdate ,'单子日期 (日期格式为 YYYY-MM-DD)'%> <%= f.text_field :reqdate ,:value => Time.now.to_s[0,10]%> 我想设计成根据“单子日期”改变 生成相应的“编号”。生成过程还要访问数据库。 求解?
你要显示时间,可以在控制器里边实现,前段时间做个这个东西 你可以在控制器里边用这样一个语句,然后在 view 页面调用就可以了 @time = Time.now.to_s 我也是新手奥………………
Time.now.strftime("%Y-%m-%d %H:%M:%S")
=>"2013-01-09 09:23:15"
这个用 jquery 比较方便吧 可以给文本框一个 onchange 事件,ajax 调用后台,然后根据返回的结果,修改 dom。
#2 楼 @dreamable 显示时间我会!controller 和 views 中实现这里区别不大!在 controller 里实现你还要多申请一个实例变量! 我的意思是这样的,比如这个用户填写表格的页面: 当用户更改“单子日期”的时候,“编号”会根据我写的这个 nextno 函数生成相应的“编号”。 注:nextno 这个函数是要访问数据库的。
当用户更改“单子日期”的时候,“编号”会根据我写的这个!!nextno 函数和“单子日期”!!生成相应的“编号”。 注:nextno 这个函数是要访问数据库的。
我是菜鸟,或许可以这样写?
controller:
respond_to :html, :js, :json
def create_no
nextno 访问数据库生成no,返回json
end
views:
现在的页面:
用户触发事件, js 运行
$.post create_no
success 更新页面上的no
我是菜鸟,希望没误导你
这 先引入 jquery 吧 只会原生的 js coffeejs 不会的说
$(document).ready(function(){
test();
})
function test(){
$("#element_id").bind('onchange',function(){
$.post(url, data, function (callback_data) {
//callback_data是从后台返回的数据
// 根据callback_data 修改dom
});
});
}
最基本的吧 看一下 jquery 文档的 ajax 和选择器