[英]Using $.getJSON to pull rails-rendered JSON into javascript ( as JSON object )
[英]Trying to pull data from params object in Rails API using JSON
使用Rspec,我正在嘗試建立一個規范來測試一些基本的HTTP請求。 我在某處犯了一個菜鳥錯誤,需要幫助才能找到它。
我故意使規范以胡扯的期望而失敗,因此錯誤消息將告訴我我得到了什么—一旦我弄清楚了,我將糾正期望:
user = create(:member)
json_data = {email: user.email, password: user.password}.to_json
post "api/v1/users/sign_in", json_data, format: :json
expect(last_response.body).to eq "foobar"
api / v1 / users / sign_in路由到以下控制器:
class API::V1::SessionsController < Devise::SessionsController
respond_to :json
def create
render text: params
end
end
這給出了錯誤:
預期:“ foobar”得到:“ {\\” {\\\\“ email \\\\”:\\\\“ 7abdiel_roob@smithrau.biz \\\\”,\\\\“ password \\\\”:\\\\“ 12345678 \\\\”} \\“ =>無,\\“動作\\” => \\“創建\\”,\\“控制器\\” => \\“ api / v1 / sessions \\”}“
好,很好。 我的數據正在到達服務器,服務器將其發送回去,這就是我想要的。 在下一步中,我嘗試獲取電子郵件。 我將控制器更改為
class API::V1::SessionsController < Devise::SessionsController
respond_to :json
def create
render text: params[:email]
end
end
我得到
預期:“ foobar”得到:“”
我對我而言,params哈希使用的是我在請求中發送的JSOn數據作為鍵的名稱,而不是實際上的值。 也許這是一個Strong_params的東西? 我已經嘗試了很多事情,但是似乎無法從params對象中提取所需的數據。
發生的事情是您正在對規范中發送的JSON數據進行雙重編碼。
json_data = {email: user.email, password: user.password}
post "api/v1/users/sign_in", json_data, format: :json
RSpec會自動為您將請求主體編碼為JSON。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.