2012-01-26 64 views
0

所有創建一個新的紀錄:的Rails 3:通過URL

什麼是一個新的記錄的正確語法與傳遞所有參數的URL裏面,而不是從一個Web表單創建?

我想要一個不同的計算機系統能夠連接一個URL並在我的Rails應用程序中創建新記錄。

但是,當我嘗試在「分數」中創建新記錄時,Rails不會添加它。

http://myapp.heroku.com/scores?message_id=51&subscriber_id=167&amount=3&method=post 

如果所需的屬性添加到一個新的得分紀錄是MESSAGE_ID,subscriber_id和金額。

這裏的Heroku的日誌

2012-01-26T18:27:34+00:00 app[web.1]: Started GET "/scores?message_id=51&subscriber_id=167&amount=3&method=submit" for 122.17.234.171 at 2012-01-26 10:27:34 -0800 
    2012-01-26T18:27:34+00:00 app[web.1]: Processing by ScoresController#index as HTML 
    2012-01-26T18:27:34+00:00 app[web.1]: Parameters: {"message_id"=>"51", "subscriber_id"=>"167", "amount"=>"3", "method"=>"post"} 
    2012-01-26T18:27:34+00:00 app[web.1]: Rendered scores/index.html.erb within layouts/application (3.4ms) 
    2012-01-26T18:27:34+00:00 app[web.1]: Completed 200 OK in 16ms (Views: 4.2ms | ActiveRecord: 10.6ms) 
    2012-01-26T18:27:34+00:00 heroku[router]: GET postopmobile.heroku.com/scores dyno=web.1 queue=0 wait=0ms service=55ms status=200 bytes=7605 

這裏是我的分數模型

class Score < ActiveRecord::Base 

    belongs_to :message 
    belongs_to :subscriber 

    end 

比分控制器具有所有標準的Rails CRUD腳手架,再加上這個(我正在制定):

before_filter :authenticate_user!, :except => [:new, :create] 

最後,在上面的URL末尾嘗試method = submit也不起作用。

有什麼想法?我試圖弄清楚這只是一個語法問題還是一個更深入的Rails創建問題。

謝謝。

回答

1

Ruby on Rails中的默認新記錄使用POST創建。如果您希望使用GET請求(我建議不要)創建它們,則需要爲您的create操作創建自定義路由。有關路線的更多信息,請參閱:http://guides.rubyonrails.org/routing.html

+0

嗨。謝謝。我根本沒有結婚,實際上我想用POST。我使用不知道如何讓Rails實現我想要的POST。我是否在自定義路線中這樣做?我是否將該自定義網址指向現有的Create CRUD操作? – DougN

+0

Rails默認使用POST。發件人(是Ruby應用程序?)必須以POST的形式發送請求。您可以使用CURL(或任何HTTP庫)進行POST(請參閱http://superuser.com/questions/149329/how-do-i-make-a-post-request-with-the-curl-command-line -工具)。 –

0

您需要POST請求而不是GET。它不會在url傳遞'方法'。 如果你真的想這樣做,你可以添加自定義路徑,例如:

resources :scores do 
get :make 
end 

然後加入「使」在控制器動作,這創造了新的紀錄。

但它非常不安全。