【问题标题】:How ajax retrieve data from ruby on rails controllerajax如何从rails控制器上的ruby中检索数据
【发布时间】:2014-09-11 05:08:22
【问题描述】:

我不熟悉 ajax 和 ruby​​ on rails。我一直在自学做项目。

现在我遇到一个问题,我想使用 ajax 从控制器中检索数据。

我不知道如何写 url 部分:

$.ajax({
  type:"GET",
  url:"books",
  dataType:"json",
  success:function(result){
    alert(result);
  }
})

books 是我的控制器的名称(book 是我的表之一)

此代码有效,但不是从书中检索所有数据,我只想要其中的一部分。 在我的书籍控制器中说一些数据在行动测试中

def test
  @test=books.find.last
  respond_do |format|
    format.html
    format.json {render ;json=>@test}
  end
end

但是当我将 url 更改为 books/test 时,我会收到一条错误消息,说 404 not found in console log。

如何检索部分控制器数据?提前谢谢

【问题讨论】:

  • 您是否在 routes.rb 中提到了测试操作?你也可以分享你的 routes.rb 吗?

标签: jquery ruby-on-rails ruby ajax


【解决方案1】:

那么您在这里尝试做的是创建一个名为 test 的非 RESTful 路由。因此,您需要将其添加到 routes.rb 中(请参阅here 了解更多信息):

resources :books do
  collection do
    get 'test'
  end
end

如果你愿意,你可以像这样传递你的参数:

$.ajax({
  type:"GET",
  url:"books/test",
  dataType:"json",
  data: {some_parameter: 'hello'},
  success:function(result){
    alert(result);
  }
})

然后你可以像这样在测试方法中使用它:

def test
  some_parameter = params[:some_parameter]
  # do something with some_parameter and return the results

  @test=books.find.last
  respond_do |format|
    format.html
    format.json {render json: @test}
  end
end

【讨论】:

  • 您的 URL 将如何调用书籍控制器中的测试方法?
  • 对不起,我漏掉了。更新了我的答案。
  • 您可能想将// do something with some_parameter and return the results 更改为# do something with some_parameter and return the results,因为这不是Ruby 中的有效注释?如果您可以在 respond_to 块中返回 JSON。
  • 哎呀!混合 php 和 ruby​​ 代码!修复了评论。并在您的代码中添加以返回最后一本书。仅供参考,由于某种原因,您在“json”之前有一个分号。
  • 太棒了!很抱歉,但我不是创建此 OP 的人。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2013-04-13
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
相关资源
最近更新 更多