POST из формы в пользовательское действие, которое не обрабатывается действием - вместо этого ошибка маршрутизации - PullRequest
0 голосов
/ 29 октября 2011

У меня есть форма поиска, которая должна POST для «пользователи / поиск». Ниже приведены соответствующие фрагменты кода: -

Форма

<%=simple_form_for @user, :url => search_user_path(@user), :input_html => {:method => :post} do |f|%>
  <div id="top" style="width:979px; height:30px;">
    <%= select "search", :area_id, Area.find(:all).collect { |p| [p.name, p.id]}, {:selected => current_user.address.area}  %>
    <%= f.association :categories, :as => :check_boxes, :label => false%>
    <%= f.submit "Submit"%>
  </div>
<% end %>

Я ожидаю, что это POST для пользователей /: id / search

routes.rb

resources :users do    
  member do
    post 'search'
  end
end

рейковые маршруты | поиск grep

search_user POST   /users/:id/search(.:format)  {:action=>"search", :controller=>"users"}

Итак, маршрут существует

Пользовательский контроллер имеет следующий метод

def search
  Rails.logger.debug('In users#search')
end

Когда я нажимаю "Отправить", я получаю ошибку маршрутизации.

Started POST "/users/9/search" for 127.0.0.1 at 2011-10-28 14:11:04 +0530

ActionController::RoutingError (No route matches "/users/9/search"):

Я ничего не понимаю по этому поводу, и после многих потраченных впустую исследований я обращаюсь к сообществу за информацией Любые указатели будут высоко оценены. Спасибо.

К вашему сведению, я на рельсах 3.0.9 и ruby ​​1.9.2

-Tarun

1 Ответ

1 голос
/ 30 октября 2011

Вам нужно написать это во множественном числе:

search_users_path(@user)

Также ваша форма немного устала. Вы могли бы просто написать

<%= form_for @user, search_users_path(@user) do |f| %>

Вместо

<%=simple_form_for @user, :url => search_user_path(@user), :input_html => {:method => :post} do |f|%>

Вам не нужно :method => :post

...