Ben ettik Rails 3.2 yükseltme çalışılıyor varolan kod temeli 4.0Raylar 4 Yöntem Raylar yükseltme sonrasında İzin Değil 3
Rails lazım Ben kontrolör bir 'create' yöntemi ve I assets_controller denilen benim yolları dosyasında bir bir girdi vardır: '/ varlıklar' bir tarayıcıya gelen, benim hemen ben bir post isteği göndermek eğer, ön uçta jQuery kullanarak
resources :assets
405 (Yönteme İzin verilmiyor):
$.ajax({method: 'POST', data: asset, url: '/assets' });
Bu Rails 3'te gayet iyi çalıştı ve sorunun ne olduğunu anlayamıyorum.
Güncellemeler:
İştebenim denetleyicisi basitleştirilmiş sürümü:
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
İşte 'tırmık Yollar'
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
İşte benim geliştirme günlüğünden çıkışı:
Started POST "/assets" for 127.0.0.1 at 2015-05-27 09:39:42 -0400
POST DATA (evet bu tüm günlük vardır): { "ASSET_TYPE": "Belge", "title": "DNS", "heading_id": 9999, "Telif hakkı": false, "url": "https://confidental.url", "pubtitle": "DNS", "yazar": ""}
Başka Düzenleme: benim tüm yolları dışarı yorumladı tanı amaçlı dosya, bunların sonuçlarıdır bazı manuel testler yapmak:
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)
, varlıklar 4 türünde ayrılmış bir son nokta mıdır?
Bu sadece bir önsezi olabilir ama 4 kontrolleri raylar siteler arası talep sahteciliği için. Bu, csrf belirteci olmadan bir rotaya gönderemeyeceğiniz anlamına gelir. Sorun hakkında daha fazla ayrıntı vermelisiniz. Denetleyici kodu ve "varlık" verilerinin denetleyiciye nasıl gönderildiğini nasıl göründüğü gibi. Raylar 4 güvenlik kılavuzu: http://guides.rubyonrails.org/security.html – JensDebergh
Denetleyicime 'skip_before_filter: verify_authenticity_token' ekledim ve denetleyicime herhangi bir csrf belirteci doğrulamasını atlamalıyım. yardım et. – denodster
@JensD İstenilen bilgileri ekledim – denodster