JavaScript CoffeeScript 大佬,救驾

syutran · 2013年01月09日 · 最后由 keating 回复于 2013年01月09日 · 3646 次阅读

在 js.coffee 里如何动态 render :partial => "form_typies"

js.coffee

jQuery -> $('#depot_typies_single').click -> $('#subform').html("<%= escape_javascript(render(:partial => 'form_single', :locals => {:f => f}) %> ")

$('#depot_typies_much').click -> $('#subform').html("<%= escape_javascript( render(:partial => 'form_much', :locals =>{:f => f}) %> ")

$("#depot_typies_judge").click -> $('#subform').html("<%= escape_javascript render(:partial => 'form_judge', :locals => {:f => f}) %>")

原本是在表单中根据 radio 的不同调用不同的 partila

个人觉得,比较 practice 的做法是:在 Rails 的 erb 模板中 render 好三个 form,然后全部用 css 将表单隐藏,再用 JS 来控制 form 的显示。

jQuery ->
  hideAllForms = ->
    # hide other forms 

  $('#depot_typies_single').click ->
    do hideAllForms    
    do $('#subform_single').show

  $('#depot_typies_much').click ->
    do hideAllForms
    do $('#subform_much').show

  $('#depot_typies_judge').click ->
    do hideAllForms 
    do $('#subform_judge').show

纯的 js 里面怎么能运行 ruby 代码。 非要动态调用,可以使用$.getScript('/your/url') 来发起 ajax 请求,不过还是 lgn21st 的做法比较好。

好吧,如果 partial 很少的话,用像@lgn21st 说的那样做,如果很多的话,就 ajax 加载吧

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