我将如何在 rails 中构建一个使用 URL 中的参数的 AJAX 请求?
How would I build an AJAX request in rails that uses a param from the URL?
如果我有一个像 localhost:3000?id=2
这样的 url,我需要更改什么才能让我的 AJAX 调用使用参数?
page_controller.rb
class PageController < ApplicationController
def index
@pId = params[:id]
@p = Plant.where(id: @pId)
respond_to do |format|
format.json { render json: @p.to_json }
format.html
end
end
end
page.coffee
$ ->
$.ajax
dataType: 'json'
url: 'index.json'
success: (data) ->
alert "Data #{JSON.parse(data)} ---"
development.log 一页加载
Processing by PageController#index as HTML
Parameters: {"id"=>"2"}
Rendering page/index.html.erb within layouts/application
[1m[36mPlant Load (1.0ms)[0m [1m[34mSELECT "plants".* FROM "plants" WHERE "plants"."id" = [0m [["id", 2]]
Rendered page/index.html.erb within layouts/application (3.0ms)
Completed 200 OK in 80ms (Views: 69.5ms | ActiveRecord: 1.0ms)
Started GET "/index.json" for ::1 at 2017-01-26 08:07:18 -0800
Processing by PageController#index as JSON
[1m[36mPlant Load (1.0ms)[0m [1m[34mSELECT "plants".* FROM "plants" WHERE "plants"."id" IS NULL[0m
Completed 200 OK in 5ms (Views: 0.1ms | ActiveRecord: 1.0ms)
这只是从一段更复杂的代码中提取的一个非常基本的示例。我的原始代码中的所有内容都有效,但我尝试访问参数时除外。
更新 1
routes.rb
Rails.application.routes.draw do
get 'index' => 'page#index'
root "page#index"
end
您的 Ajax 请求的 URI 不包含该参数。您拨打的是 index.json
而不是 index.json?id=1
如果我有一个像 localhost:3000?id=2
这样的 url,我需要更改什么才能让我的 AJAX 调用使用参数?
page_controller.rb
class PageController < ApplicationController
def index
@pId = params[:id]
@p = Plant.where(id: @pId)
respond_to do |format|
format.json { render json: @p.to_json }
format.html
end
end
end
page.coffee
$ ->
$.ajax
dataType: 'json'
url: 'index.json'
success: (data) ->
alert "Data #{JSON.parse(data)} ---"
development.log 一页加载
Processing by PageController#index as HTML
Parameters: {"id"=>"2"}
Rendering page/index.html.erb within layouts/application
[1m[36mPlant Load (1.0ms)[0m [1m[34mSELECT "plants".* FROM "plants" WHERE "plants"."id" = [0m [["id", 2]]
Rendered page/index.html.erb within layouts/application (3.0ms)
Completed 200 OK in 80ms (Views: 69.5ms | ActiveRecord: 1.0ms)
Started GET "/index.json" for ::1 at 2017-01-26 08:07:18 -0800
Processing by PageController#index as JSON
[1m[36mPlant Load (1.0ms)[0m [1m[34mSELECT "plants".* FROM "plants" WHERE "plants"."id" IS NULL[0m
Completed 200 OK in 5ms (Views: 0.1ms | ActiveRecord: 1.0ms)
这只是从一段更复杂的代码中提取的一个非常基本的示例。我的原始代码中的所有内容都有效,但我尝试访问参数时除外。
更新 1
routes.rb
Rails.application.routes.draw do
get 'index' => 'page#index'
root "page#index"
end
您的 Ajax 请求的 URI 不包含该参数。您拨打的是 index.json
而不是 index.json?id=1