【问题标题】:Rails 5 not using form_for method "patch", defaulting to "get"Rails 5 不使用 form_for 方法“patch”,默认为“get”
【发布时间】:2016-10-05 22:04:32
【问题描述】:

我需要更新用户信息,我正在使用 form_for。当我导航到http://localhost:3000/users/1/edit 时,我的错误是它找不到 [GET]"/users/1/edit" 的路线。为什么 Rails 使用 GET html 动词?

我的 users_controller、路由和视图:

def edit
  @user = User.find(params[:id])
end

--------

resource :users, only: [:new, :create, :edit, :update]

    Prefix Verb  URI Pattern           Controller#Action
     users POST  /users(.:format)      users#create
 new_users GET   /users/new(.:format)  users#new
edit_users GET   /users/edit(.:format) users#edit
           PATCH /users(.:format)      users#update
           PUT   /users(.:format)      users#update
--------

<%= form_for(@user, url: edit_users_path(@user), html: {method: "patch"}) do |f| %>
  Username: <%= f.text_field :username %><br>
  Email:    <%= f.text_field :email %><br>
  Password: <%= f.text_field :password %><br>
            <%= f.submit %>
<% end %>

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    routes.rb 中,将resource 更改为resources

        resources :users, only: [:new, :create, :edit, :update]
    

    目前,您的路线不接受任何参数。您的路径转到/users/edit,而不是/users/:id/edit

         Prefix Verb   URI       Pattern           Controller#Action
         edit_users    GET   /users/edit(.:format)    users#edit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多