Как я могу использовать метод POST в приложении ROR на сервере Heroku?

#ruby-on-rails #ruby #post #heroku

#ruby-on-rails #ruby #Публикация #heroku

Вопрос:

Я создал простое приложение ROR на сервере Heroku и хочу добавить продукт, используя скрипт RUBY:

требуется ‘rubygems’ требуется ‘rest_client’

RestClient.post ‘http://falling-ice-5948.herokuapp.com/products/new ‘, :title => ‘TESTTESTTEST’, :description => «MYTESTTESTTESTTEST», :image_url => «TESTTESTNULL.jpg «, :цена => 4.50

Вот моя страница:

http://falling-ice-5948.herokuapp.com/products/new

Когда я запускаю свой скрипт, он выдает ошибку:

ruby postEasy.rb /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb:48:в return!': 404 Resource Not Found (RestClient::ResourceNotFound) from
/usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:230:in
process_result’ из /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:178:в transmit' from /usr/lib/ruby/1.8/net/http.rb:543:in start’ из /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:172:в transmit' from
/usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in
execute’ из /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:33:в execute' from
/usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient.rb:72:in
post’ из postEasy.rb:4

Есть идеи?

Заранее спасибо

Комментарии:

1. Вы просто хотите создать продукт? Если это так, вы также можете сделать это в консоли rails на heroku с $ heroku console помощью .

2. Я хочу создать scrpit ruby, который делает это автоматически. Вы понимаете?

3. Итак, вы на самом деле просто хотите заполнить свою базу данных записями, верно?

4. Почти … Fe: я дам вам этот скрипт, и вы сможете использовать его для добавления своих продуктов. возможно, это важно на сервере Heroku…

5. Зачем вам вообще это делать? Есть ли веская причина для добавления продуктов через какой-либо HTTP API?

Ответ №1:

Вам нужно будет вложить параметры в RestClient.post метод. Скорее всего, вы ищете params[:product] в своем действии, но для этого не будет никаких данных. Я тестировал ваше приложение heroku, извините за это, но это сработает (как и у меня):

 RestClient.post 'http://falling-ice-5948.herokuapp.com/products',
  :product => {
    :title => 'foobarbazfoobarbaz',
    :description => "foobarbazfoobarbaz description",
    :image_url => "foobarbazfoobarbaz.jpg",
    :price => 42.00
  }
  

Комментарии:

1. Хм, для моего сообщения должна быть кнопка «проверить».

Ответ №2:

Я не знаю подробностей вашего приложения, но я ожидаю, что вы вызовете запрос POST на http://falling-ice-5948.herokuapp.com/products / нет http://falling-ice-5948.herokuapp.com/products/new .

ПОЛУЧИТЬ http://falling-ice-5948.herokuapp.com/products/new извлек бы форму для создания новой записи.

Комментарии:

1. Я пытаюсь сделать это таким образом: RestClient.post ‘ falling-ice-5948.herokuapp.com/products ‘, {:действие =>»создать», : контроллер => «продукты», :заголовок => ‘ТЕСТТЕСТТЕСТ’, :описание => «MYTESTTESTTESTEST», :image_url => «TESTTESTNULL.jpg «, :цена =>4.50 } но он все равно не работает

2. Вы пробовали точно так же, как в примере, который вы опубликовали изначально, но просто удалили new из конца URL-адреса?

Ответ №3:

Проверьте вывод rake routes . Это покажет методы для настроенных вами маршрутов и доступные методы. Я подозреваю, что /products/new будет отображаться как GET, в то время как /products как POST — это то, что вы на самом деле хотите делать.

Кстати, это тоже произошло бы локально, так что это не имеет никакого отношения к Heroku.

Комментарии:

1. продукты ПОЛУЧАЮТ /products(.:format) {:action=>»index», :controller=>»products»} POST /products(.:format) {:action=>»create», :controller=>»products»} new_product ПОЛУЧАЕТ /products/new(.:format) {:action=>»new», :controller=>»products»} edit_product GET /products/:id/edit(.:format) {:action=>»edit», :controller=>»products» } product GET /products/:id(.:format) {:action=>»показать», :controller=>»продукты»} PUT /products/:id(.:format) {:action=>»обновить», :controller=>»продукты»} Какой из них я должен использовать и как?

2. POST /products(.:format) {:action=>»создать»,:controller =>»продукты»} является решающим. Измените свой код на; RestClient.post ‘ falling-ice-5948.herokuapp.com/products ‘, :title => ‘TESTTESTTEST’, :description => «MYTESTTESTTESTTEST», :image_url => «TESTTESTNULL.jpg «, :цена => 4.50