Ruby on rails Rails 5.1.6未保存参数

Ruby on rails Rails 5.1.6未保存参数,ruby-on-rails,rails-5.1.6,Ruby On Rails,Rails 5.1.6,我已经有好几年没有在Rails上做过很多工作了,我对Rails 5.1.6没有任何经验。虽然我可以通过种子文件和Rails控制台保存数据,但我无法从HTML表单保存数据。在提交时,我看到身份验证令牌和参数出现在浏览器的URL栏中,并重新呈现表单,而不是保存 唯一不寻常的是,我在Docker容器中开发,但我在5.1.4中编写的最后一个应用程序使用相同的Dockerfile和Docker Compose文件,并且功能正常 我的控制器: class UsersController < Appli

我已经有好几年没有在Rails上做过很多工作了,我对Rails 5.1.6没有任何经验。虽然我可以通过种子文件和Rails控制台保存数据,但我无法从HTML表单保存数据。在提交时,我看到身份验证令牌和参数出现在浏览器的URL栏中,并重新呈现表单,而不是保存

唯一不寻常的是,我在Docker容器中开发,但我在5.1.4中编写的最后一个应用程序使用相同的Dockerfile和Docker Compose文件,并且功能正常

我的控制器:

class UsersController < ApplicationController
  before_action :find_user, only: [:show, :edit, :update]

  def index
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to @user
    else
      render :new
    end
  end

  def show
  end

  def edit
  end

  def update
    if @user.update_attributes(user_params)
      redirect_to users_url
    else
      render :edit
    end
  end

  private
    def user_params
      params.require(:user).permit(:last_name, :first_name, :category, :phone_number, :email, :password, :password_confirmation)
    end

    def find_user
      @user = User.find(params[:id])
    end
end
“提交”后的URL:

我以前见过这种情况,但可能已经三年前了,我记不起我是如何修复的。如果您有任何想法,我们将不胜感激。

请检查 改变



检查 改变




在您的问题中显示的
GET
之前是否有
POST
?不,没有。然而,逻辑告诉我应该有。我对“form_with”的使用在某种程度上是不正确的吗?纯粹出于好奇,如果删除
@user
(不添加
local:true
)周围的括号,会发生什么?我有一种感觉,萨利尔明白了。我两种方法都试过了,但都没有成功。我看了一眼类似容器中的Rails 5.1.4应用程序,并在该应用程序中发布了“for_with model:@model_name,local:true”帖子。在本例中,它提交了一个GET请求。我解决了它。我的视图是一个位于HTML表单标记(而不是div)中的分部。我把form标签改为div标签,GET变成了POST。我将把Salil的解决方案标记为正确的解决方案,因为我仍然需要使用“local:true”。还感谢jvilian让我对这一点进行了深入思考。在您的问题中显示的
GET
之前是否有
POST
?不,没有。然而,逻辑告诉我应该有。我对“form_with”的使用在某种程度上是不正确的吗?纯粹出于好奇,如果删除
@user
(不添加
local:true
)周围的括号,会发生什么?我有一种感觉,萨利尔明白了。我两种方法都试过了,但都没有成功。我看了一眼类似容器中的Rails 5.1.4应用程序,并在该应用程序中发布了“for_with model:@model_name,local:true”帖子。在本例中,它提交了一个GET请求。我解决了它。我的视图是一个位于HTML表单标记(而不是div)中的分部。我把form标签改为div标签,GET变成了POST。我将把Salil的解决方案标记为正确的解决方案,因为我仍然需要使用“local:true”。还感谢jvilian让我对这件事有了更深入的思考。
<%= form_with model: (@user) do |f| %>
      <%= f.label :first_name %>
      <%= f.text_field :first_name %>

      <%= f.label :last_name %>
      <%= f.text_field :last_name %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :phone_number %>
      <%= f.text_field :phone_number %>

      <%= f.submit "Create user" %>
<% end %>
class User < ApplicationRecord
  belongs_to :account
end
Started GET "/users/new?utf8=%E2%9C%93&authenticity_token=r0JIvUKGw1mtIVHT582uIfVvTglMTn6PE2iYOCYNHDv5GJ5AedXb4ZS%2F7kFRmfmFA5PIJeklSbmSE3FR0SpJSg%3D%3D&user%5Bfirst_name%5D=aaa&user%5Blast_name%5D=bbb&user%5Bemail%5D=aaa%40bbb.com&user%5Bphone_number%5D=&commit=Create+user" for 172.18.0.1 at 2018-06-05 21:02:12 +0000
Processing by UsersController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"r0JIvUKGw1mtIVHT582uIfVvTglMTn6PE2iYOCYNHDv5GJ5AedXb4ZS/7kFRmfmFA5PIJeklSbmSE3FR0SpJSg==", "user"=>{"first_name"=>"aaa", "last_name"=>"bbb", "email"=>"aaa@bbb.com", "phone_number"=>""}, "commit"=>"Create user"}
  Rendering users/new.html.erb within layouts/application
  Rendered users/new.html.erb within layouts/application (2.0ms)
Completed 200 OK in 348ms (Views: 331.7ms | ActiveRecord: 0.0ms)
<%= form_with model: (@user) do |f| %>
<%= form_with model: @user, local: true do |f| %>