【发布时间】:2018-03-26 11:56:18
【问题描述】:
我正在 Rails 应用程序中创建新用户。我的表单设置好了,现在查看控制器中的方法。这就是我对 new 和 create 操作的要求 -
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to @user, notice: "Welcome to Safeguarding Monitor."
else
render 'new'
end
end
这些是用户参数 -
def user_params
params.require(:user).permit(:firstname, :surname, :nickname, :email, :timezone )
end
当我填写表格时,它只是重定向到新的。它没有拯救用户,我似乎不明白为什么。我已经离开了一段时间,无法完全弄清楚为什么会发生这种情况。
这是表格 -
<% provide :title, "Add Staff Member" %>
<%= form_for @user do |f| %>
<div class="form-group row">
<%= f.label :firstname, 'First Name', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.text_field :firstname, class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :nickname, 'Nickname', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.text_field :nickname, class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :surname, 'Last Name', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.text_field :surname, class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :email, 'Email Address', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.email_field :email, class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :email, 'Send Welcome Email?', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= check_box_tag :send_welcome_email %>
</div>
</div>
<div class="form-group row">
<%= f.label :current_school_id, 'School Group', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.text_field :current_school_id, class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :timezone, 'Timezone', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.time_zone_select(:timezone, nil, {default: @user.timezone}, {class: 'form-control custom-select'}) %>
</div>
</div>
<hr>
<h2>Create Password</h2>
<p><small>Password must be at least six characters long</small></p>
<div class="form-group row">
<%= f.label :password, 'New Password', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.password_field :password, autocomplete: "off", class: 'form-control' %>
</div>
</div>
<div class="form-group row">
<%= f.label :password_confirmation, 'Confirm Password', class: 'col-sm-2' %>
<div class="col-sm-10">
<%= f.password_field :password_confirmation, autocomplete: "off", class: 'form-control' %>
</div>
</div>
<div class="actions">
<%= f.submit 'Submit', class: 'btn btn-primary' %>
</div>
<% end %>
更新 -
我进入了显示页面并遇到了一个错误,我似乎通过此操作修复了该错误 -
def show
@user = User.find(params[:id])
end
但是,虽然这种方法似乎可以修复网站上的问题。用户配置文件未保存在数据库中,当我检查 rails 控制台时,最后一个用户不是我创建的用户。我应该使用其他方法吗?
【问题讨论】:
-
你一定遇到了一些错误,在
if @user.save的 else 块中做一个puts @user.errors看看你有没有得到任何东西 -
宁可
puts @user.errors.messages:)
标签: ruby-on-rails model-view-controller