所有
通过将所有参数传递到URL内而不是从Web表单中传递新记录的正确语法是什么?
我想要一个不同的计算机系统,以便能够连接URL并在我的Rails应用程序中创建新记录。
但是,当我尝试在" Scores"中创建新唱片时,Rails不会添加它。
http://myapp.heroku.com/scores?message_id=51&subscriber_id=167&amount=3&method=post
要添加到新分数记录的所需属性是message_id,subscriber_id和amount。
这是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脚手架,加上这个(我正在运行Devise):
before_filter :authenticate_user!, :except => [:new, :create]
最后,在上述网址末尾尝试方法=提交也不起作用。
有什么想法?我试图弄清楚它只是一个语法问题还是更深层次的Rails创建问题。
感谢。
答案 0 :(得分:1)
默认情况下,Ruby on Rails中的新记录是使用POST
创建的。如果您想使用GET
请求创建它们(我建议您反对),您需要创建一个指向create
操作的自定义路由。有关路线的更多信息,请参阅:http://guides.rubyonrails.org/routing.html。
答案 1 :(得分:0)
您需要POST请求而不是GET。它不适用于在url处传递'method'。 如果您真的想这样做,可以添加自定义路线,例如:
resources :scores do
get :make
end
然后在控制器上添加'make'动作,创建新记录。
但这非常不安全。