新手问题 如何设置动态的 FORM?

topswim · 2013年01月08日 · 最后由 huacnlee 回复于 2013年01月09日 · 3032 次阅读

我想写一组动态文本框比如 <%= 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]%> 我想设计成根据“单子日期”改变 生成相应的“编号”。生成过程还要访问数据库。 求解?

在线等待啊!

我也是新手,不过貌似应该在 controller 里面实现,而不是在 views 中实现吧。

你要显示时间,可以在控制器里边实现,前段时间做个这个东西 你可以在控制器里边用这样一个语句,然后在 view 页面调用就可以了 @time = Time.now.to_s 我也是新手奥………………

#5 楼 @topswim 被前边几位弄糊涂了

Time.now.strftime("%Y-%m-%d %H:%M:%S")
=>"2013-01-09 09:23:15"

改变编号的问题

这个用 jquery 比较方便吧 可以给文本框一个 onchange 事件,ajax 调用后台,然后根据返回的结果,修改 dom。

#3 楼 @mlb0903 我不是要显示时间我是说根据用户填入 form 的“日期”改变“编号”

#2 楼 @dreamable 显示时间我会!controller 和 views 中实现这里区别不大!在 controller 里实现你还要多申请一个实例变量! 我的意思是这样的,比如这个用户填写表格的页面: 当用户更改“单子日期”的时候,“编号”会根据我写的这个 nextno 函数生成相应的“编号”。 注:nextno 这个函数是要访问数据库的。

当用户更改“单子日期”的时候,“编号”会根据我写的这个!!nextno 函数和“单子日期”!!生成相应的“编号”。 注:nextno 这个函数是要访问数据库的。

这是前端逻辑,用 javascript 实现。

#9 楼 @Rei javascript 会写一点,但是不知到在哪里写!

#4 楼 @shooter 怎么写,给个例子?

我是菜鸟,或许可以这样写?

controller:
    respond_to :html, :js, :json

    def create_no
        nextno 访问数据库生成no,返回json
    end

views:
    现在的页面:
       用户触发事件, js 运行
          $.post  create_no
                success 更新页面上的no

我是菜鸟,希望没误导你

13 楼 已删除

#11 楼 @topswim

这 先引入 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 和选择器

Rails 不是万能的,自己用 JS 来实现吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号