Ruby 表单上的用户注册字段未保存到数据库
我建立了一个登录页,用户可以在这里提交他们的电子邮件 我有以下数据库:Ruby 表单上的用户注册字段未保存到数据库,ruby,forms,ruby-on-rails-4,Ruby,Forms,Ruby On Rails 4,我建立了一个登录页,用户可以在这里提交他们的电子邮件 我有以下数据库: create_table "subscriptions", force: true do |t| t.string "fname" t.string "lname" t.string "email" t.datetime "created_at" t.datetime "updated_at" end 以及“我的网页/主页”视图中的以下表单:
create_table "subscriptions", force: true do |t|
t.string "fname"
t.string "lname"
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
end
以及“我的网页/主页”视图中的以下表单:
<div class="form-subscribe">
<%= form_for(@subscription, { :class => 'form-horizontal' }) do |f| %>
<div class="form-inputs subscription-box">
<div class: "form-space">
<div class: "form-group">
<%= f.text_field :fname, class: "form-control sub-field", placeholder: "First Name" %>
</div>
</div>
<div class: "form-space">
<div class: "form-group">
<%= f.text_field :lname, class: "form-control sub-field", placeholder:"Last Name" %>
</div>
</div>
<div class: "form-space">
<div class: "form-group">
<%= f.email_field :email, class: "form-control sub-field", placeholder:"Email" %>
</div>
</div>
</div>
<div class="form-actions">
<%= f.button :submit, class: "btn btn-default"%>
</div>
<% end %>
</div>
结束
这是我的页面控制器:
class PagesController < ApplicationController
def home
@subscription = Subscription.new
end
end
class PagesController
我对这一点很陌生,所以不确定这里发生了什么,有什么想法吗?当您使用
Rails4
时,您必须使用strong参数来允许所需的属性
像这样更新您的subscriptioncontroller
class SubscriptionsController < ApplicationController
def new
@subscription = Subscription.new
end
def create
@subscription = Subscription.new(subscription_params)
if @subscription.save
redirect_to root_path
else
render 'new'
end
end
private
def subscription_params
params.require(:subscription).permit(:fname,:lname,:email)
end
class subscriptioncontroller
查看一下这些中的参数您不是已经在控制器中设置了强参数
方法吗?嗯,我可能忘记了这些,这些是必要的吗?我现在正在读关于他们的书。还有哪个控制器。我不明白为什么我们必须有两个控制器…我的答案对你有用吗?
class SubscriptionsController < ApplicationController
def new
@subscription = Subscription.new
end
def create
@subscription = Subscription.new(subscription_params)
if @subscription.save
redirect_to root_path
else
render 'new'
end
end
private
def subscription_params
params.require(:subscription).permit(:fname,:lname,:email)
end