Если у меня есть URL-адрес, например localhost:3000?id=2
, что мне нужно изменить, чтобы получить вызов AJAX для использования параметра?Как создать запрос AJAX в рельсах, который использует параметр из URL?
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" = $1[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
что у вас есть в маршрутах? – inye
@inye обновил мое сообщение, чтобы включить маршруты – Ben
вы читаете статью htis http://guides.rubyonrails.org/routing.html? – inye