Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 理解Rails3中的Ajax_Ruby_Ajax_Ruby On Rails 3_Jquery - Fatal编程技术网

Ruby 理解Rails3中的Ajax

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

我认为我在一定程度上理解了Rails 3中的Ajax,但我认为我在某些地方把自己搞糊涂了,或者误解了某些东西。我的理解是,如果我想在同一页面上调用不同的内容,那么我会为该特定操作创建一个js.erb文件。例如,如果我有一个tynewyddnews操作,我将有一个tynewyddnews视图和一个tynewyddnews.js.erb文件

然后,我创建一个要在该页面上呈现的部分,并在.js.erb文件中调用该部分

范例

看法

Tynewyd_posts是一个范围

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