2012-07-10 70 views
0

我想保存記錄在數據庫中。許多列值將從http請求獲取到api。在rails數據庫中存儲複雜的記錄與form_tag

我有一個文本字段和一些複選框,以及會保持的形式的session_id。這是從另一個控制器(form_tag('results#store'))發佈到結果控制器中名爲store的操作。

商店動作:

def store 

    query = query_preprocesser(params[:query]) # this is in a helper 

    ## example of resArray ## 
    #resArray = [[{:engine => "bing, :results => [{:Description => "abc", :Title => "def"}, {:Description => "ghi", :Title => "jkl"}]}, {etc},{etc} ],[{:eng...}]] 

    resArray = getResults(query) # Also a helper method returning an array of up to 3 arrays 
    resArray.each do |engine| 
    db_name = engine[:engine] 
     engine[:results].each do |set| 

     res = Result.new(
     :session_id => params[:session_id], 
     :db_name => db_name, 
     :query => query, 
     :rank => set[:Rank], 
     :description => set[:Description], 
     :title => set[:Title], 
     :url => set[:Url]) 
    res.save! 
    end 
    end 

res.each do |res| 
    res.save 
end 
#Result.new(:session_id => params[:session_id], :db_name => "Bing", :query => "Whats the story", :query_rank => 1, :title => "The Title", :description => "descript", :url => "www.google.ie",:query_number => 1) 

respond_to do |format| 
     format.html { redirect_to pages_path } 
     format.json { head :no_content } 
    end 
end 

我的路線是resources :results

服務器日誌:

[2012-07-10 23:30:48] INFO WEBrick 1.3.1 
[2012-07-10 23:30:48] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux] 
[2012-07-10 23:30:48] INFO WEBrick::HTTPServer#start: pid=15584 port=3000 


Started POST "/results" for 127.0.0.1 at 2012-07-10 23:31:36 +0100 
Connecting to database specified by database.yml 
Processing by ResultsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"/nTJOF5Ab+XnL+jxRBHnTJz45YRVmgbf55bmn5/iz8E=", "query"=>"search term", "button"=>"", "searchType"=>"Seperate", "bing"=>"1", "session_id"=>"e08c13a99f21a91520fcc393e0860c94"} 
(0.2ms) begin transaction 
(0.2ms) rollback transaction 
Rendered results/_form.html.erb (13.9ms) 
Rendered results/new.html.erb within layouts/application (23.6ms) 
Completed 200 OK in 213ms (Views: 78.4ms | ActiveRecord: 2.9ms) 

表:

<%= form_tag('results#store') do %> 

耙路線:

 store POST /pages(.:format)    results#store 
     results GET /results(.:format)   results#index 
       POST /results(.:format)   results#create 
    new_result GET /results/new(.:format)  results#new 
    edit_result GET /results/:id/edit(.:format) results#edit 
     result GET /results/:id(.:format)  results#show 
       PUT /results/:id(.:format)  results#update 
       DELETE /results/:id(.:format)  results#destroy 
     store POST /pages(.:format)    results#store 
     pages GET /pages(.:format)    pages#index 

我一直被重定向到結果控制器的新動作。輔助方法甚至沒有被執行。我是過去複雜事物的主人,任何人都可以幫助解決這個問題嗎?

+0

描述一點你如何到達這裏。你先訪問哪個網址?發佈整個旅程的服務器日誌(啓動url,表單提交,重定向到新的)。 – 2012-07-10 22:21:11

+0

我從'pages#index'開始,這就是表單的位置。 – Nultyi 2012-07-10 22:40:14

+0

我正在從創建操作重定向,因爲非參數正在到達操作並且它們在模型中進行了驗證。我仍然不明白爲什麼當我指定商店操作時,表單被髮布到創建操作... – Nultyi 2012-07-10 23:35:46

回答

0

您是否設置了store操作的路線?如果你這樣做,那麼你應該在你的表單標籤中使用它的url助手:

form_tag(results_store_url) 
+0

頂級人物Dean :)它與'store_url'的作品。我一直在修補過去一小時的路線,這一切都結合在一起!我顯然需要更加努力地尋找路由。 :|我不明白的是,用'store_url'行動的HTML表示'http:// localhost:3000/pages' - 我想知道爲什麼當我閱讀更多關於路由的信息時。再次感謝Dean! – Nultyi 2012-07-11 00:05:11