У меня есть существующий кодовое что я пытаюсь обновить Rails 3.2 до Rails 4.0Rails 4 Method Not Allowed после обновления с Rails 3
У меня есть контроллер называется assets_controller с помощью метода «создать» и I есть запись в моих маршрутах файл:
resources :assets
Использования Jquery на переднем конце, если я отправить пост запрос на «/ активы» от Брауэра, я получаю 405 (Method Not Allowed):
$.ajax({method: 'POST', data: asset, url: '/assets' });
В Rails 3 это отлично работало, и я не могу понять, в чем проблема.
Обновления:
Heres упрощенный вариант моего контроллера:
class AssetsController < ApplicationController
skip_before_filter :verify_authenticity_token
def create
# params[:assets] is passed if a mass addition of assets (i.e. book) occurs
assets = []
if params[:assets]
assets = params[:assets]
else
assets.push params
end
last_asset_id = 0
assets.each do |asset_data|
asset = Object.const_get(asset_data[:asset_type]).new(asset_data)
if !asset.save
json_false_errors(asset.errors.full_messages)
return
else
last_asset_id = asset.id
end
end
end
end
Heres выход из
assets GET /assets(.:format) assets#index
POST /assets(.:format) assets#create
new_asset GET /assets/new(.:format) assets#new
edit_asset GET /assets/:id/edit(.:format) assets#edit
asset GET /assets/:id(.:format) assets#show
PATCH /assets/:id(.:format) assets#update
PUT /assets/:id(.:format) assets#update
DELETE /assets/:id(.:format) assets#destroy
Heres мой журнал разработки рейк маршруты ":
Started POST "/assets" for 127.0.0.1 at 2015-05-27 09:39:42 -0400
(да вот и все бревно имеет)
POST ДАННЫЕ: { "asset_type": "документ", "название": "DNS", "heading_id": 9999, "авторское право": ложные, "URL": "https://confidental.url", "pubtitle": "DNS", "автор": ""}
Другого Edit: Я закомментирована целые мои маршруты файл для диагностических целей, эти результаты Выполнение некоторых ручных испытаний:
POST http://localhost:8000/assets 405 (Method Not Allowed)
POST http://localhost:8000/asset 404 (Not Found)
POST http://localhost:8000/ass 404 (Not Found)
- это активы какой-то зарезервированной конечной точки в рельсах 4?
Это может быть просто догадка, но рельсы 4 проверки для подделки запроса на межсайтовый запрос. Это означает, что вы не можете отправлять сообщения на маршрут без токена csrf. Вы должны дать более подробную информацию о проблеме. Как и код контроллера и как данные 'asset' выглядят так, как будто вы отправляете на контроллер. Rails 4 руководство по безопасности: http://guides.rubyonrails.org/security.html – JensDebergh
Я добавил 'skip_before_filter: verify_authenticity_token' к моему контроллеру, который, как мне кажется, должен пропустить любую проверку токена csrf, но это не похоже на Помогите. – denodster
@JensD Я добавил запрошенную информацию – denodster