在Rails中使用相同路由获取和POST

时间:2018-02-19 17:40:59

标签: ruby-on-rails

我在Rails中需要一个getpost方法用于相同的路由,所以我创建了这两个。

group_add GET    /groups/:group_id/add(.:format)        usergroups#new
          POST   /groups/:group_id/add(.:format)        usergroups#new

这是在我的Routes.rb档案

resources :groups do
    get 'add', to: 'usergroups#new', controller: 'usergroups'
    post 'add', to: 'usergroups#new', controller: 'usergroups'
end

我可以使用group_add路径导航到该页面,这是GET请求,但是当我点击此表单上的提交(应该是帖子请求)时,没有任何事情发生。

如果表单没有保存在create方法中,它会重新定向到表单。参数将在服务器日志中传递,但用户未添加到组中。任何想法,为什么这不会发布?

<%= form_for @usergroup, url: group_add_path do |form| %>
  <div class="row">
    <div class="col-md-8">
      <div class="form-group">
        <%= form.label :user_id %>
        <%= form.collection_select :user_id, User.order(:email), :id, :email, {}, { :id => 'user_select', placeholder: 'Test' } %>
      </div>
    </div>
  </div>
  <div class="form-group">
    <%= form.label :group_id %>
    <%= form.collection_select :group_id, Group.all, :id, :group_name, {}, { :id => 'group_select', placeholder: 'Test' } %>
  </div>

  <%= form.submit 'Add user', class: 'btn btn-primary' %>
<% end %>

1 个答案:

答案 0 :(得分:0)

在您的示例代码中,您已将getpost定向到usergroups#new,但您应将post发送至usergroups#create