2017-03-24 10 views
0

からの応答を取得する方法を私はテストのために郵便配達を使用していますはポスト

def lesson 
    begin 
    @result = @user.lesson_details(Integer(params[:lesson_id]), 
           params[:lesson_name] 
    head :ok 
    rescue ArgumentError => e 
    render_error(:bad_request, e.message) 
    end 
end 

controller.rb

namespace :books 
    resources :pages, only: [] do 
    post 'lesson' 
    end 
end 

以下のようにルートを持っています。郵便配達員またはjsonに@resultを返す方法はありますか?

+0

'return render(:json => @result)'を試すことができますか? –

答えて

0

メソッドrenderレンダリングが結果を表示します。 jsonオブジェクトを返そうとしているので、:jsonをキーとしてrenderに入れます。

def lesson 
    begin 
    @result = @user.lesson_details(Integer(params[:lesson_id]), 
           params[:lesson_name] 
    return render(:json => @result)   
    head :ok 
    rescue ArgumentError => e 
    render_error(:bad_request, e.message) 
    end 
end 

と呼ばれる複数のrender方法がある場合railsがエラーを投げるだろう、ので、我々はreturnをやっている理由があります。

+0

'begin'ステートメントは必要ありません。 –

+0

エラーが発生しました "レンダリングまたはリダイレクトは、このアクションで複数回呼び出されました。レンダリングまたはリダイレクトを呼び出すことができるだけで、アクションごとに1回だけ呼び出すことができます。リダイレクト後にアクションを終了するには、「redirect_to(...)」と「return」のような処理を行う必要があります。 – User7354632781

+0

'render'文を' head:ok'の上に置くことができますか? –