小编msc*_*ven的帖子

Coffeescript JQuery点击仅在页面刷新时工作

我有一个使用coffeescript的rails应用程序.当我刷新页面或使用URL直接转到页面时,以下代码可以正常工作.当我点击链接进入此页面并尝试它时,它根本不起作用.为什么会这样?

jQuery ->
  console.log "Ready."
  $('form').on 'click', '.add_fields', (event) ->
    console.log "Click."
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()
Run Code Online (Sandbox Code Playgroud)

重新加载后,我会在适当的时候准备好并点击它,它可以工作.从另一页面点击后,我什么都没得到.我也从chrome获得了这个弃用警告,我不确定如何解决,因为它来自JQuery本身:

event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
jquery.js?body=1:5375
Run Code Online (Sandbox Code Playgroud)

只有当上面的代码不起作用时才会显示错误.镀铬会阻挡它吗?我正在使用jquery-rails (3.0.4)

jquery coffeescript ruby-on-rails-4

5
推荐指数
1
解决办法
2025
查看次数

使用Active Model Serializers,如何渲染部分?

我正在创建一个新闻源并使用Active Model Serializers gem设置JSON响应.我想渲染一个常规的ERB部分并将其作为JSON中的一个属性.

控制器/ posts_controller.rb:

def index
  @posts = Post.all
  respond_to do |format|
    format.json { render json: @posts.to_a, each_serializer: PostSerializer }
  end
end
Run Code Online (Sandbox Code Playgroud)

串行器/ post_serializer.rb:

def event_html
  ApplicationController.new.render_to_string(:partial => 'events/event', :locals => { :event => object.event }) if object.event
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的视图有一些使用帮助器和请求对象(url)的代码,当我尝试这样做时,我遇到了错误.

事件/ _event.html.erb:

<div class="event">
  <h4 class="title"><%= link_to event.name, event %></h4>
  <div class="date"><%= date_range event.start_at, event.end_at %></div>
  <div class="description"><%= event.description.html_safe %></div>
</div>
Run Code Online (Sandbox Code Playgroud)

undefined method `host' for nil:NilClass

有什么好办法可以解决这个问题吗?

active-model-serializers ruby-on-rails-4

5
推荐指数
1
解决办法
900
查看次数