未提交Rails表单,未记录任何内容

时间:2015-07-06 14:09:13

标签: ruby-on-rails

我遇到了用于用户注册的Rails表单的问题。单击按钮时,没有任何反应。控制台中未记录任何内容,未创建任何内容且页面保持不变。这是查看users / new.html.erb:

<section>
<div class="container">
    <div class="row">
        <%= form_for(@user) do |f| %>
          <%= f.text_field :username, :placeholder => "User name" %>
          <%= f.email_field :email, :placeholder => "Email" %>
          <%= f.password_field :password, :placeholder => "Password" %>
          <%= f.submit "Create an account" %>
        <% end %>
    </div>
</div>
</section>

这是控制器。

def new
    @user = User.new
end

def create
    @user = User.new(user_params)

    if @user.save
        session[:user_id] = @user.id
        redirect_to '/'
    else
        redirect_to '/register'
    end
end

private
def user_params
    params.require(:user).permit(:username, :email, :password)
end

我已经设置了以下路线:

resources :users
get 'register' => 'users#new'

最后我的用户迁移(模型有has_secure_password)

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :username
      t.string :email
      t.string :password_digest
      t.timestamps null: false
    end
  end
end

1 个答案:

答案 0 :(得分:0)

您未在失败案例中记录任何内容(else操作中的create),并且您正在重定向而不是渲染,因此您将获得新的{{1}每次都不是显示现有的@user,而是包含它可能包含的任何错误。

将您的@user更改为:

else

我不确定您是否执行else logger.debug @user.errors.full_messages render :new end 视图中有任何错误处理代码,但即使您不这样做,上述内容也至少会为您记录错误。