gpt4 book ai didi

javascript - 从 AJAX 每秒调用创建的帖子,无需用户输入,html View ?

转载 作者:行者123 更新时间:2023-11-28 04:51:46 24 4
gpt4 key购买 nike

<小时/>

要找到答案,请访问:

Render a view in rails via AJAX and controller

<小时/>

我有一个带有 Post 模型的 Rails 应用程序,其中:创建并保存新帖子;旧的已被毁灭;这是在 setInterval() 函数内设置的 AJAX 调用每 10 秒自动完成一次,如下我的 application.js 文件中所示:

var post_value = 0;
setInterval(function(){

$.get('https://api.test', function(data){
post_value = data.result.c[0];
});

$.ajax({
type: "POST",
url: "/posts",
data: { parameter: post_value }
});

}, 1000);

到目前为止,一切顺利,我可以看到在 Rails 控制台中,AJAX 调用每秒都会保存新帖子并销毁旧帖子。这是我的 Controller :(AJAX POST 通过简单的路线与创建操作交互:posts#create)

  def index
@posts = Post.all
@bet_last = Bet.last
end

def create
@post = Post.new
@post.value = params["parameter"]
@post.save
Post.first.destroy

@last_post = Post.last
@posts = Post.all

render "index"

end

这是相应的 html View :(index.html.erb)

<% @posts.each do |p|%>
<tr>
<th scope="row"><%= p.id%></th>
<td>...</td>
<td><%= p.value%></td>
<td>Active</td>
</tr>
<%end%>

我的问题是我希望在不刷新添加和删除帖子的页面的情况下显示 html 表格行。我知道,如果从表单创建帖子,我可以使用 data-remote=true 并链接其余部分,但在我的情况下,帖子是在 Controller 中创建的,无需用户输入,所以我没有像您一样的正常设置会用一个表格。如何在 html 中反射(reflect)更改以便动态显示?

感谢您的指导。

PS:我可以看到在浏览器控制台中,html 每秒都会更改,但我无法在页面上动态反射(reflect)这一点,但在浏览器控制台中它可以工作。

编辑:

在我的 Controller 中使用以下渲染(而不是渲染“index”)可以解决问题:

render :js => "window.location = '#{root_path}'"

但是它会使页面重新加载/刷新,这是我不想要的。

最佳答案

在你的ajax调用上添加成功回调并从那里更新你的html

$.ajax({
type: "POST",
url: "/posts",
data: { parameter: post_value },
success: function(data){
// update your html here
}

});

关于javascript - 从 AJAX 每秒调用创建的帖子,无需用户输入,html View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42862268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com