Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails如何先渲染,然后调用方法?_Ruby On Rails_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails Rails如何先渲染,然后调用方法?

Ruby on rails Rails如何先渲染,然后调用方法?,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我的控制器中有以下操作: def ad @koder = @side.reklamers.pluck(:id) - [session[:log]] @reklame = Reklamer.find(@koder.sample) session[:log] = @reklame.id render :text => "<span class='bannerid' data-id='#{@reklame.id}'></span><

我的控制器中有以下操作:

def ad

    @koder = @side.reklamers.pluck(:id) - [session[:log]]
    @reklame = Reklamer.find(@koder.sample)
    session[:log] = @reklame.id
    render :text => "<span class='bannerid' data-id='#{@reklame.id}'></span><p style='margin-bottom: 7px;margin-top: 7px;font-size: 9px;text-align: center !important;'>Ad</p>#{@reklame.kode}"

 end
def-ad
@koder=@side.reklamers.pulk(:id)-[session[:log]]
@reklame=Reklamer.find(@koder.sample)
会话[:log]=@reklame.id
render:text=>“

Ad

{@reklame.kode}” 结束
它呈现一个HTML广告。这段代码非常快。问题是当我尝试查看示例计数时,响应变得非常慢。3秒。与200毫秒相比

@koder = @side.reklamers.pluck(:id) - [session[:log]]
@reklame = Reklamer.find(@koder.sample)
session[:log] = @reklame.id
@reklame.views += 1
@reklame.save
render :text => "<span class='bannerid' data-id='#{@reklame.id}'></span><p style='margin-bottom: 7px;margin-top: 7px;font-size: 9px;text-align: center !important;'>Ad</p>#{@reklame.kode}"
@koder=@side.reklamers.pull(:id)-[session[:log]]
@reklame=Reklamer.find(@koder.sample)
会话[:log]=@reklame.id
@reklame.views+=1
@雷克勒姆,救命
render:text=>“

Ad

{@reklame.kode}”
我尝试添加了一个具有相同结果的背景工作


我该怎么办?

既然
视图实际上是一个计数器,也许你应该看看:

你的情况应该是这样的

Reklamer.increment_counter(:views, @reklame.id)
它应该只更新视图列,不运行验证、回调等,这将使它更快。但另一方面,“简单保存”上的3s表示还有其他问题。

首先,尝试:

@reklame.update_attribute :views, @reklame.views + 1
看看这是否有帮助。如果是这样的话,那么您将进行一些代价高昂的数据验证,这会使您的速度减慢,但至少您知道问题的根源

如果这不起作用,试着用

Thread.new { //code }

如果保存速度仍然很慢,那么可能是数据库的设置方式或类似的问题

也许你应该提供你尝试使用后台工作解决方案的代码。我只是尝试调用我已经存在的一个后台工作,它将响应速度减慢了2,8秒。