加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 渲染部分Rails3.x coffeescript

发布时间:2020-12-17 03:04:18 所属栏目:百科 来源:网络整理
导读:我有以下要求.我有一个’学校’下拉,作为我添加新学校的最后选项,所以如果用户选择该选项,我想通过ajax将new_school表单加载为部分. 我上线了 gem 'rails','3.2.9'gem 'coffee-rails','~ 3.2.1'Jquery via gem 'jquery-rails' 早期使用rails 3和原型我曾经这
我有以下要求.我有一个’学校’下拉,作为我添加新学校的最后选项,所以如果用户选择该选项,我想通过ajax将new_school表单加载为部分.

我上线了

gem 'rails','3.2.9'
gem 'coffee-rails','~> 3.2.1'
Jquery via gem 'jquery-rails'

早期使用rails< 3和原型我曾经这样做过

Ajax.Updater (aka Rails link_to_remote :update => 'some_div')

和导轨> 3 JQuery我熟悉?? .js.erb,有类似的东西

$("#school_form").html("<%= escape_javascript(render(:partial => "form"))%>");

但我是coffeescript的新手,我不知道如何使用coffeescript,有人可以帮助我:),(因为我相信你不应该为此做一个服务器请求)

到目前为止,我已经完成了以下操作来捕获select_tag更改事件

$->
  $('#school_name_select').change ->
    unless $(this).val()
      $('school_name').html([I want to have the _new_school_form partial here])

解决方法

使用隐藏的div.

通常,您不希望尝试混合使用JS和HTML.由于跨站点脚本攻击的可能性,转义可能是复杂的,容易出错的,并且是危险的.

只需将表单部分渲染为默认情况下不显示的div.在再培训局:

<div id="school_name_form" style="display: none;">
  <%= render 'form' %>
</div>

在你的CoffeeScript中:

$->
  $('#school_name_select').change ->
    if $(this).val()
      $('#school_name_form').slideUp()
    else
      $('#school_name_form').slideDown()

我建议使用像滑动或褪色这样小而有品味的过渡.它为您的应用程序提供了更加完美的感觉

不需要AJAX.这种模式很常见,我的应用程序范围定义如下.

.not-displayed {
  display: none;
}

然后使用HAML(如果你进入那个),HTML模板变得简单:

#school_name_form.not-displayed
  = render 'form'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读