我正在使用Rails 4,并尝试通过表单保存数据,但该过程不断失败。我已经尽力去看其他有类似问题的人,但即使复制他们的代码也不适合我。填写表单后的最终结果是收到错误,说明未保存联系人。有任何想法吗?谢谢!
controllers / contacts_controller.rb
class ContactsController < ApplicationController
def create
@contact = Contact.new(contact_params)
if @contact.save
flash[:success] = "Contact saved!"
else
flash[:alert] = "Contact not saved!"
end
end
def destroy
end
def new
@contact = Contact.new
end
private
def contact_params
params.require(:contact).permit(:first_name, :last_name, :email)
end
end
视图/联系人/ new.html.erb
<div class= "panel-body">
<%= form_for(@contact) do |f| %>
<div class="form-group">
<%= f.label :first_name %>
<%= f.text_field :first_name, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Add", class: "btn btn-primary" %>
</div>
<% end %>
</div>
配置/ routes.rb中
Rails.application.routes.draw do
resources :contacts, only: [:new, :create, :destroy]
end
模型/ contact.rb
class Contact < ActiveRecord::Base
validates :first_name, presence: true
validates :last_name, presence: true
validates :email, presence: true
end
分贝/迁移
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts do |t|
t.string :first_name
t.string :last_name
t.string :email
t.timestamps
end
end
end
答案 0 :(得分:0)
由于您收到了警报消息,我认为会有一些消息 验证失败。
我的想法 - 当您致电.save
时出现问题可能有多种原因:
- 验证错误
- 您的数据库可能不完整(需要运行
rake db:migrate
)- 您的数据结构可能存在问题
我会这样做:
Contact
型号rake db:migrate
(迁移数据表)params
传递到view
controller
哈希值
醇>
-
<强>错误强>
当你提到没有错误时,除非你真正在你的网站上显示它们,否则不会有:
引用this answer,您可能希望这样做:
<%= form_for @contact do |f| %>
<% if @location.errors.any? %>
<ul>
<% @location.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
<% end %>
答案 1 :(得分:0)
嗨,我刚遇到这个问题。
阅读此主题中提供的链接,并查看有关布局和部分文件的其他几个屏幕。
结论:
所以当我点击提交按钮时,它只是重新加载/刷新页面。
对于遇到此事的其他人,您必须检查生成的表单标记。
P.S:像我一样,Rails中的新手必须阅读信息链接, 结果我们也可以将变量发送到部分而不仅限于:provide&amp;屈服方法。
答案 2 :(得分:-2)
找出解决方案(虽然不确定为什么它打破了它)。我意识到我的表单实际上是部分呈现的,而我在部分中的猜测形式无法成功传递params。一旦我从部分删除表格,一切都提交正常。
感谢所有的建议,请原谅新手的错误:)