2017-05-16 16 views
0

ユーザーが「レポート取得」ボタンを押したときに、他のAPIからデータを取得するレポートオブジェクトがあります。'create'の関数定義値

newcreateを別の関数からパラメータを取得するにはどうすればよいですか?

def new 
    @run = Run.new 
end 

def create 
    param_holder = get_payload 
    @run = Run.new(param_holder) 
end 

def get_payload 
    statushash = Hash.new 

    # placeholder data for testing below 
    statushash[:daterun] = Time.now.strftime("%m/%d/%Y") 
    statushash[:status] = "OK" 
    statushash[:count] = 13 

    return statushash 
end 

誰でも学習リソースのための提案を持っていますし、このような基本的な質問をする:これは私のコントローラがどのように見えるのですか?

+0

コントローラーメソッドを手動で呼び出そうとすると、初心者が頻繁に巻き込まれることがあります。ロジックをいくつかの共有場所に移動し、必要に応じてコントローラーアクションなどから呼び出してください。 http://stackoverflow.com/questions/15260984/guidelines-for-where-to-put-classes-in-rails-apps-that-dont-fit-anywhereを参照してください。 –

+0

前のセクションから 'params'にアクセスしようとしていますか?要求すれば、そうすることはできません。すべての要求に対して 'params'がリセットされます。もしそうなら、なぜあなたはこれをしたいのですか? – Kris

答えて

0

すべてのAPI呼び出しロジックをサービスオブジェクトと呼ばれる独自のオブジェクトに抽象化することをお勧めします。このオブジェクトにはJSONを返すベースラインAPI呼び出しのメソッドがあります。これらのハッシュ(JSON)をRUNモデルに渡すことができます。また、モデルを使用してレポートデータを作成し、メソッドから必要なものを抽出したり、必要なすべての属性を持つ場合はハッシュ全体を渡したりすることができます。

私がこれを行う方法は、この「提供されたコントローラ」で作成アクションに当たる投稿を「レポートを取得」ボタンにすることです。

このような場合、通常は何らかのユーザー入力ビュー用に予約されているため、この場合は「新しい」アクションは使用しません。