Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Javascript jQuery和Rails_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript jQuery和Rails

Javascript jQuery和Rails,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在编写一个Rails应用程序,需要插入一点jQuery代码,但我真的不知道如何让它工作。这是我的控制器代码: class ChatroomController < ApplicationController def send_data @role = Role.find_by_id(session[:role_id]) render :juggernaut do |page| page.insert_html :bottom, 'chat_data', "

我正在编写一个Rails应用程序,需要插入一点jQuery代码,但我真的不知道如何让它工作。这是我的控制器代码:

class ChatroomController < ApplicationController
def send_data
    @role = Role.find_by_id(session[:role_id])
    render :juggernaut do |page|

      page.insert_html :bottom, 'chat_data', "<b>#{@role.name}:</b> #{h params[:chat_input]}<br>"
    end
    render :nothing => true
  end
end
我还将
添加到视图的
标题中


但是当我的聊天室日志填满时,滚动条会出现,但不会随着新消息的出现而自动移到底部。

问题似乎是您插入的代码只在脚本开始时运行一次

我对jquery了解不多,所以这只是一个通用的解决方案

function sub(data) {
  $('#chat_data').each( function () {
    var s_top = this.scrollHeight - this.clientHeight;
    var scl = this.scrollTop == s_top;
    this.innerHTML += '<br/>' + data;
    if ( scl ) this.scrollTop = s_top + this.clientHeight;
  })
};
使用将RJ发送到客户端的东西,例如:

page.call( :sub, data)

希望有帮助。

您到底在应用程序中粘贴了哪些代码?想留下一个示例吗?什么有效,什么无效?我只是把它放到application.js中,它不起作用。但我怀疑自动滚动();比特打算去别的地方吗?我不明白的是,当我的页面没有重新加载(或者至少我不认为它会重新加载)时,函数将如何被多次调用。编辑了我的答案,查看关于输入错误的第一部分。仍然什么都不做。我只是把代码扔到application.js中,并将其包含在视图中,这是不是做错了什么?嗯,我不确定是否有类似page.run的东西。赞成。。。这是佩奇的电话,对不起
function sub(data) {
  $('#chat_data').each( function () {
    var s_top = this.scrollHeight - this.clientHeight;
    var scl = this.scrollTop == s_top;
    this.innerHTML += '<br/>' + data;
    if ( scl ) this.scrollTop = s_top + this.clientHeight;
  })
};
page.insert_html ....
page.call( :sub, data)