【发布时间】:2017-03-20 05:23:37
【问题描述】:
我有一个表单,其中有一些字段应该填充到我的数据库中,但它没有。我不确定这是为什么。我定义了修复另一个错误的参数,但我的数据没有被存储。我的表名是 users。
我的控制器:
Class LandlordPageController < ApplicationController
before_action :get_user
def get_user
@user = current_User
end
def index
end
def show
end
def create
@user = User.new(user_params)
@user.save
redirect_to profile_page_index_path
end
private
def user_params
params.require(:user).permit(:address, :cityResiding, :ssn, :birthDate, :gender, :phoneNumber)
end
end
我的表格:
<%= form_for :user do |f| %>
<div class="field">
<%=f.label :address, 'Current Address' %><br/>
<%= f.text_field :address, :required => 'required' %>
</div>
<div class="field">
<%=f.label :cityResiding, 'Current City' %><br/>
<%= f.text_field :cityResiding, :required => 'required' %>
</div>
<div class="field">
<%=f.label :phoneNumber, 'Phone Number'%><br/>
<%= f.telephone_field :phoneNumber, maxlength: 15, :required => 'required' %>
</div>
<div class="field">
<%=f.label :gender, 'Gender'%><br/>
<%= f.select :gender, ['',' Male', 'Female', 'Other','Prefer Not to Answer']%>
</div>
<div class="field">
<%=f.label :birthDate, 'Birth Date'%><br/>
<%= f.date_select :birthDate, order: [:month, :day, :year], :required => 'required'%>
</div>
<div class="field">
<%=f.label :ssn, 'Social Security Number' %><br/>
<%= f.text_field :ssn, maxlength: 9 %>
</div>
<div class="actions">
<%= f.submit "Submit Information" %>
</div>
<% end %>
日志:
Started GET "/landlord_page" for 127.0.0.1 at 2016-11-06 17:59:58 -0500
Processing by LandlordPageController#index as HTML
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]]
Rendering landlord_page/index.html.erb within layouts/application
Rendered landlord_page/index.html.erb within layouts/application (4.0ms)
Rendered layouts/_navbar.html.erb (1.0ms)
Completed 200 OK in 98ms (Views: 88.4ms | ActiveRecord: 0.0ms)
Started POST "/landlord_page" for 127.0.0.1 at 2016-11-06 18:00:06 -0500
Processing by LandlordPageController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"98tUidqprFyTG8ZC/tV9TRDIVlV0I+ocnQfKTUDqorlS+JMFHtaCWz69EwBvH5MrHhnRbg93m695//Z1I5xt3A==", "user"=>{"address"=>"1", "cityResiding"=>"1", "phoneNumber"=>"1", "gender"=>" Male", "birthDate(2i)"=>"11", "birthDate(3i)"=>"6", "birthDate(1i)"=>"2016", "ssn"=>""}, "commit"=>"Submit Information"}
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]]
(0.0ms) begin transaction
(0.0ms) rollback transaction
Redirected to http://localhost:3000/profile_page
Completed 302 Found in 4ms (ActiveRecord: 0.0ms)
编辑:我的表单确实提交了数据,但是保存时抛出了这个错误
NoMethodError in LandlordPageController#create
undefined method `save' for #<Array:0x0000000d883a08>
【问题讨论】:
-
日志中显示了什么?表格在哪里?
-
您的模型是否需要任何其他字段?提供您的表格结构也会有所帮助。乍一看,我看不出任何错误。
-
您可能会遇到验证错误,但无论@user.save 是否成功,您似乎都通过执行
redirect_to profile_page_index_path忽略了这些错误。作为快速测试,在@user.save之后尝试puts @user.errors以检查验证错误。 -
是的,我会处理验证错误,但为了更好地诊断,请将您的
create方法更改为@user.save!,这将导致错误被抛出而不是静默消耗。 -
@MarsAtomic 我不知道这是一件事,无论如何这肯定会有所帮助。
标签: ruby-on-rails database forms