Rails 3: создайте новую запись по URL - PullRequest
0 голосов
/ 26 января 2012

Все:

Каков правильный синтаксис для новой записи, создаваемой путем передачи всех параметров внутри URL, а не из веб-формы?

Мне нужен другой компьютерсистема, чтобы иметь возможность объединять URL и создавать новые записи в моем приложении Rails.

Но, когда я пытаюсь создать новую запись в «Счете», 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

Контроллер Scores имеет все стандартные леса Rails CRUD, а также (я использую Devise):

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

И наконец, метод method = submit в концевыше URL тоже не работает.

Есть мысли?Я пытаюсь выяснить, является ли это просто проблемой синтаксиса или более глубокой проблемой создания Rails.

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Новые записи по умолчанию в Ruby on Rails создаются с использованием POST.Если вы хотите, чтобы они были созданы с использованием запроса GET (против которого я бы посоветовал), вам нужно создать собственный маршрут к вашему действию create.Для получения дополнительной информации о маршрутах см .: http://guides.rubyonrails.org/routing.html.

0 голосов
/ 26 января 2012

Вам нужен запрос POST вместо GET. Это не будет работать с передачей метода в URL. Если вы действительно хотите это сделать, вы можете добавить собственный маршрут, например ::10000

resources :scores do
 get :make
end

Затем добавьте действие «make» на контроллере, который создаст новую запись.

Но это крайне небезопасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...