Ruby 理解Rails3中的Ajax
我认为我在一定程度上理解了Rails 3中的Ajax,但我认为我在某些地方把自己搞糊涂了,或者误解了某些东西。我的理解是,如果我想在同一页面上调用不同的内容,那么我会为该特定操作创建一个js.erb文件。例如,如果我有一个tynewyddnews操作,我将有一个tynewyddnews视图和一个tynewyddnews.js.erb文件 然后,我创建一个要在该页面上呈现的部分,并在.js.erb文件中调用该部分 范例 看法 Tynewyd_posts是一个范围Ruby 理解Rails3中的Ajax,ruby,ajax,ruby-on-rails-3,jquery,Ruby,Ajax,Ruby On Rails 3,Jquery,我认为我在一定程度上理解了Rails 3中的Ajax,但我认为我在某些地方把自己搞糊涂了,或者误解了某些东西。我的理解是,如果我想在同一页面上调用不同的内容,那么我会为该特定操作创建一个js.erb文件。例如,如果我有一个tynewyddnews操作,我将有一个tynewyddnews视图和一个tynewyddnews.js.erb文件 然后,我创建一个要在该页面上呈现的部分,并在.js.erb文件中调用该部分 范例 看法 Tynewyd_posts是一个范围 scope :tynewydd_p
scope :tynewydd_posts, :include => :department, :conditions => {"departments.name" => "Ty Newydd"}, :order => "posts.published_on DESC"
因此,我现在的问题是,当我尝试渲染页面时,会出现错误
Couldn't find Post without an ID
很抱歉发了这么长的帖子,但如果有人能给我指出正确的方向,那就太好了
谢谢我觉得你做得不对,对不起。不需要那么复杂。我将从一个更简单的例子从头开始,然后从那里开始构建 我会做一些类似于
rails g scaffold post title:string
的事情,然后在浏览器控制台中这样做:
$.ajax({
url: "/posts/index"
}).done(function() {
console.log("done");
});
您应该能够通过浏览器的控制台看到返回的数据。在Rails方面,这些数据来自这里:
class PostsController < ApplicationController
def index
@posts = Post.all
# there might be more stuff here
end
end
class PostsController
希望你明白我在说什么。如果您不这样做,我建议您在尝试将两者结合之前,分别学习更多关于Rails的知识和更多关于jQuery/ajax的知识。在我看来,您做得不对,对不起。不需要那么复杂。我将从一个更简单的例子从头开始,然后从那里开始构建 我会做一些类似于
rails g scaffold post title:string
的事情,然后在浏览器控制台中这样做:
$.ajax({
url: "/posts/index"
}).done(function() {
console.log("done");
});
您应该能够通过浏览器的控制台看到返回的数据。在Rails方面,这些数据来自这里:
class PostsController < ApplicationController
def index
@posts = Post.all
# there might be more stuff here
end
end
class PostsController
希望你明白我在说什么。如果您不这样做,我建议您在尝试将两者结合起来之前,分别学习更多关于Rails的知识和更多关于jQuery/ajax的知识。好吧,看来我的问题是调用帖子id的方式,我还将ajax调用移到了一个单独的操作中,不管设置是否复杂都是正确的 我改变了什么
<%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews'), :post_id => t.id, :remote => true %>
然后在我的部分代码中,我可以使用@tynewyddpost实例变量
希望这对其他人有所帮助好吧,看来我的问题是我调用帖子id的方式,我还将ajax调用移动到了一个单独的操作中,不管设置是否复杂都是正确的 我改变了什么
<%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews'), :post_id => t.id, :remote => true %>
然后在我的部分代码中,我可以使用@tynewyddpost实例变量
希望这对其他人有所帮助公平地说,您会接受您的建议,尽管此设置以前已经运行过?回到基本点,我想就像你说的另一个问题,如果你不介意的话,我希望看到所有的帖子都在控制台中被返回吗?我相信是的。如果你没有看到任何帖子,请记住一个可能的原因是还没有帖子。你可能想通过Rails控制台创建一些。我正在我当前的应用程序中创建。响应是整个页面,但我想这是对的?将控制器的最后一行更改为
render json:Post.all
。另外,你可能应该为你的这个新项目提出一个单独的问题,因为那里的问题与你原来的问题并不完全相关。公平地说,你会接受你的建议,尽管这个设置以前有效吗?回到基本点,我想就像你说的另一个问题,如果你不介意的话,我希望看到所有的帖子都在控制台中被返回吗?我相信是的。如果你没有看到任何帖子,请记住一个可能的原因是还没有帖子。你可能想通过Rails控制台创建一些。我正在我当前的应用程序中创建。响应是整个页面,但我想这是对的?将控制器的最后一行更改为render json:Post.all
。此外,您可能应该为您的新项目打开一个单独的问题,因为那里的问题与您原来的问题并不完全相关。
<%= link_to t.title, tynewyddnews_path(:type => 'tynewyddnews'), :post_id => t.id, :remote => true %>
<%= link_to t.title, my_path_path(:type => 'tynewyddnews', :id => t.id), :remote => true %>
def my_path
@tynewyddpost = Post.find(params[:id])
end