フォームを使用してAPIキーを入力すると、フォームを保存する前にAPIキーが有効な応答を返すことを確認したいと考えました。それ以外の場合は、(共通の検証エラーのような)エラーメッセージと共にフォームに戻ります。Rails:API呼び出しのフォーム検証
私はstackoverflowを見てみました:How do I perform validation on an api call while submitting form and produce necessary error message?
私は検証コードをテストしましたが、動作しますが、コントローラにあります。私はRailsでAPIを使用するのは初めてですが、フォームの検証はモデル内で行う必要があると考えていますが、モデルにコードを挿入するとエラーになります。
これは、私は、コントローラに持っているものです。
meetup_apikey = @group.meetup_apikey
group_urlname = @group.meetup_urlname
url = "https://api.meetup.com/2/events?key=#{meetup_apikey}&sign=true&photo-host=public&group_urlname=#{group_urlname}"
def test_api_responds_correctly(dataurl)
response = HTTParty.get(dataurl)
puts "\nAPI Response success: #{response.success?}\n\n"
case response.success?
when true
puts "-------"
puts "API Response code: #{response.code}"
puts "API Response message: #{response.message}"
puts "API Response body: #{response.body}"
puts
else
flash[:error] = "Invalid API key or group urlname"
end
end
# start the program
test_api_responds_correctly(url)
私は正しいAPIキーと有効なグループURL名を入力した場合。ターミナルリターン:
API Response success: true
-------
API Response code: 200
API Response message: OK
API Response body: {"results":[{"utc_offset":-25200000,"venue":... }}
、ユーザーが入力した情報と上記Group has been successfully updated
メッセージと共にページにリダイレクトされます。
私は、ターミナルに戻り、無効なAPIキーを入力した場合:
API Response success: false
を、ユーザーが入力した情報をページにリダイレクトされます。上記のメッセージは
Group has been successfully updated
と
Invalid API key or group url name
です。
これは意図したものではありません。一般的な検証エラーが返され、APIの応答が有効になるまでフォームページにとどまるようにします。私はモデルにコードを入れようとしましたが、ちょうどundefined method 'test_api_responds_correctly'
エラーが発生します。
ご意見やご提案があれば助かります。ありがとう!
@Sergey Moiseevありがとう、私はあなたのコメントに続き、それは働いた。 APIコールのカスタム検証メソッドを書くことができず、実際には最近、httparty gem(昨日)が見つかりました。フォームの検証が完全に行われ、フォームが更新され、APIレスポンスが無効な場合は ':meetup_apikey'フィールドに検証エラーが表示されます。 – teresa
ようこそ!時々、2007年からRailsを使用した後も、私はguide.rubyonrails.orgをクロールして、何かを見逃していないことを確認しています:) –