Ruby on rails 主页上的Rails注册表单

Ruby on rails 主页上的Rails注册表单,ruby-on-rails,Ruby On Rails,我似乎看到了关于如何使用Desive在主页(static_pages#home)上为用户提供注册表单的问题,但找不到一个只使用Rails的表单 我的主页上有以下表格: <h2>Sign Up</h2> <%= form_for(@user) do |f| %> <br> <%= f.label :email %> <%= f.text_field :email %><b

我似乎看到了关于如何使用Desive在主页(static_pages#home)上为用户提供注册表单的问题,但找不到一个只使用Rails的表单

我的主页上有以下表格:

  <h2>Sign Up</h2>
    <%= form_for(@user) do |f| %>
      <br>

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

      <%= f.label :password %>
      <%= f.password_field :password %><br>

      <%= f.label :password_confirmation, "Confirm password" %>
      <%= f.password_field :password_confirmation %><br>

      <%= f.submit "Sign up", class: "btn btn-large btn-primary" %>
    <% end %>
注册




但是,当我提交表单时,不会保存用户数据(由于某些原因,电子邮件和密码的属性不会从表单条目中获取)。我已经在home操作中实例化了@user变量,所以我不确定为什么这不起作用

class StaticPagesController < ApplicationController
    def home
        # For future where sign-up page is on home page.
        @user = User.new
    end
end
class StaticPagesController

任何帮助都将不胜感激。谢谢大家!

首先,我强烈推荐使用Desive。处理用户身份验证是一件棘手的事情,尤其是要确保事情的安全

其次,需要为要保存的用户设置控制器操作。比如:

class StaticPagesController < ApplicationController
  def create
    @user = User.new(params[:user])
    @user.save!
  end
end
class StaticPagesController

然后将正确的路由添加到
config/routes.rb
文件中。

您可以通过显式地向表单目标操作传递url来设置表单目标操作,默认情况下无需在UsersController中创建操作


所以你可以在@Judy的回答中尝试一下,你是对的,尽管我想尝试一下,但我不想先学习诀窍。所以StaticPages中的控制器操作似乎并不能解决这个问题。表单似乎直接进入用户控制器,在那里它使用“创建”操作,而从未触及StaticPagesController中的操作。在两者之间的某个地方,属性似乎丢失了?谢谢你的帮助!哎呀,我真蠢。我使用了强参数,在我的创建操作中,我使用了@user=user.new(params[user\u params]),而不是user.new(user\u params)。我问了个愚蠢的问题。但是对于其他人来说,很高兴知道它可以与UsersController中的默认创建操作配合使用。