<小时/>
要找到答案,请访问:
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/