Rails - 将表单提交给控制器操作

Rails - Submit form to controller action

我有 ProjectsController 并在那里添加了一个名为 search_for_members 的方法 我希望此方法在用户通过 ajax 提交时用成员名称更新 div 这里的问题是我收到路由错误

No route matches [POST] "/projects/47"

有什么帮助吗?

routes.rb

  resources :projects do
     resources :user_stories
     get '/projects/:project_id/searchformembers' => 'projects#searchformembers'
  end

views/projects/show

      <%= form_tag :url => {:action => "search_for_members"} , :method => 'get', :remote => true do%>
         <div>
          <%= text_field_tag :search, params[:search], :class => 'form-control', :placeholder => 'User name'%>
        </div>
        <%= submit_tag "Add user", :name => nil, :class => "btn btn-info"%>
      <% end%>

      <div id="members">
        <%= render @users %> 
      <% end %>

projects_controller

 def search_for_members
   if (params[:search])
     @users = User.search(params[:search],   @project).page(params[:page]).per_page(4) 
  else 
     @users = @project.users
  end    
  respond_to do |format|
   format.js
  end 
 end

您的路由定义错误,与您的控制器或 form_for 用法不匹配。像这样更改路线:

resources :projects do
  get :search_for_members, :on => :member
end

然后像这样在您的视图中更新您的 form_for 定义:

  <%= form_tag search_for_members_project_path(@project), :method => 'get', :remote => true do%>

你应该一切就绪。