Попытка вызова определенного метода - ошибка маршрутизации - PullRequest
2 голосов
/ 13 февраля 2012

У меня есть пользователь и модель продукта. Таблица пользователя имеет поле «скидка». Я пытаюсь вызвать метод apply_discount из представления пользователей / индекса, который умножает все цены и дает скидку. пользователи / index.html.haml:

- @users.each do |user|
# user data
  = form_tag(action:'apply_discount', method: :put) do 
    = number_field_tag :discount
    = submit_tag

В UsersController есть метод с именем apply_discount. Моя проблема заключается в ошибке маршрутизации при отправке формы:

локальный: 3000 / активов действий = apply_discount и контроллер = пользователи и метод = ставить

Нет совпадений маршрутов [POST] "/ assets"

Пожалуйста, объясните мне, почему эта форма запрашивает активы. И как правильно сделать запрос.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Наличие этого в вашем URL, вероятно, означает, что ваш тег формы имеет некоторый неправильный синтаксис, поэтому я не думаю, что ваша проблема - ошибка маршрутизации.

? Action = apply_discount & controller = users & method = put

должно выглядеть примерно так:

<%= form_tag(:controller => "foo", :action => "bar", :method => "post" %>
<% end %>

у вас должна быть настройка маршрута для действия, которое вы хотите получить вконтроллер

проверить это руководство

http://guides.rubyonrails.org/form_helpers.html

0 голосов
/ 23 июля 2012

На самом деле, я обнаружил, что если в маршрутах нет соответствующего хорошего маршрута, он делает URL таким:

/assets?controller=xxx&ampaction=yyy

Если он находит маршрут, вы получаете правильный

/xxx/yyy

(при условии, что xxx - это контроллер, а yyy - указанное вами действие).

Так что, если вы создаете URL без REST, вам лучше сначала указать его в таблице маршрутов.

...