0

当我尝试提交表单以编辑用户详细信息时出现此错误。我正在使用 Rails 3.2.7。这是我的控制器

class UsersController < ApplicationController

def index
  @users = User.all

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @users }
  end
end


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

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @user }
  end
end

def new
  @user = User.new
end

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

def create
  @user = User.new(params[:user])

  if @user.save
    sign_in @user
    flash[:success] = "Welcome to the app!"
    redirect_to welcome_path
  else
    render 'new'
  end
end

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

  if @user.update_attributes(params[:user])
    sign_in @user
    flash[:success] = "Profile updated"
     redirect_to welcome_path
  else
    render 'edit'
  end
end

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

  respond_to do |format|
    format.html { redirect_to users_url }
    format.json { head :no_content }
  end
end
end

和形式:

<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <p><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</p>

      <ul>
        <% @user.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
<div class="box">
  <%= f.label :email %>
  <%= f.text_field :email, class:"input_text" %>
    <br>
  <%= f.label :"edit password" %>
  <%= f.password_field :password, class:"input_text" %>
    <br>
  <label>
    <br>
  <%= f.submit "Save", class: "button", name: "button" %>
  </label>
</div>
<% end %>

耙路线输出:

         users GET    /users(.:format)              users#index
               POST   /users(.:format)              users#create
      new_user GET    /users/new(.:format)          users#new
     edit_user GET    /users/:id/edit(.:format)     users#edit
          user GET    /users/:id(.:format)          users#show
               PUT    /users/:id(.:format)          users#update
               DELETE /users/:id(.:format)          users#destroy

让我知道是否还有其他内容我应该发布...在此先感谢

4

4 回答 4

1

编辑必须是 GET,所有方法都是 GET,除了 CREATE(POST)、UPDATE(PUT) 和 DESTROY(DELETE)。你能复制你的应用程序生成的表单的 HTML 代码吗?

于 2012-10-19T11:03:54.443 回答
0

您的 edit_user 路线不应该是 POST 路线吗?我在这里看到 /users/1/edit 是一个 GET 路由。也许您在 config/routes.rb 中犯了错误?

你能贴出来吗?

于 2012-10-19T09:15:35.613 回答
0

通过删除解决了这个问题:

gem 'rails-api'
于 2015-05-26T01:50:50.800 回答
0

我发现了同样的错误,我已经解决了这个问题:get 和 patch 的显式格式:

获取“编辑”,id:@user

和:

patch 'update',id:@user, user: { name: name, email: email, password: "", password_confirmation: "" }

使用宝石:

  • 红宝石 2.0
  • 使用导轨 (4.1.4)
  • 使用 rspec-support 3.4.1
  • 使用 rspec-core 3.4.1
  • 使用 rspec-expectations 3.4.0
  • 使用 rspec-mocks 3.4.0
  • 使用 rspec-rails 3.4.0

bundle update 不会将 3.4.0 中的 rspec gem 更新到 4.1

于 2015-11-29T18:22:37.760 回答