【问题标题】:How to connect input from text_area_tag/email_field_tag to database?如何将 text_area_tag/email_field_tag 的输入连接到数据库?
【发布时间】:2018-09-10 14:40:36
【问题描述】:

这是我的代码

来自 index.html.erb

<%= form_for index_path, :method => "POST"  do %>
  <%= label_tag :name, "Enter your full name: " %>
  <%= text_field_tag :name, @name, :placeholder => "Enter your name" %><br/>

  <%= label_tag :email, "Enter your e-mail address: " %>
  <%= email_field_tag :email, @email, :placeholder => "something@domain.com" %><br/>
  <%= label_tag :question, "Type your question: " %>
  <%= text_area_tag :question, @question, :size => "30x5", :placeholder => "Your text goes here", :maxlength => "130" %><br/>




  <%= submit_tag "" %> 

来自博客控制器

class BlogController < ApplicationController
  def index
    @name = params['name']
    @email = params['email']
    @question = params['question']
  end

  def about
  end

  def contact
  end
end

来自seeds.rb:

Invitation.create(:name => "#{@name}", :email => "#{@email}", :question => "#{@question}")

当我填写所有字段并提交时,它会在数据库中创建空白记录,我做错了什么?

【问题讨论】:

  • 这与您的问题没有直接关系。但是...您尝试在index 操作中创建记录似乎很不寻常。此外,您似乎正在尝试在BlogController 中创建Invitation,这似乎也很不寻常。为什么不使用InvitationControllercreate 操作?
  • 我只是想知道如何在不使用脚手架的情况下创建自己的表单并将其与模型连接起来。做这个只是为了测试,谢谢
  • 试着摆脱像"#{x}" 这样的习惯,x 是你的意思,或者在极少数情况下x.to_s 强制它成为一个字符串。还可以尝试使用 Ruby 1.9 哈希声明样式,它已经存在了很长时间:create(name: @name, email: @email, ...) 它不那么冗长,并且与其他语言更一致。
  • 注意:如果您正在编辑模型,预计您将使用 form_for 并传入模型,然后使用 form.email_field 等等。

标签: ruby-on-rails ruby database


【解决方案1】:

你做错了。您无法访问在seeds.rb 内的控制器中定义的实例变量。相反,您只需要在 index 操作中创建记录

def index
  @name = params['name']
  @email = params['email']
  @question = params['question']
  Invitation.create(:name => @name, :email => @email, :question => @question)
end

seeds.rb 用于创建具有默认值的记录以播种数据库。通常这些值是硬编码的

【讨论】:

  • 谢谢!但是为什么它除了一个已填充的记录之外还生成一个空白记录?我从种子.rb 中删除了所有内容
  • @synopsa 当您在seeds.rb 中有该代码时,您是否运行了rake db:seed?如果是这样,它将创建空白记录为 @name@email@question 全部为零
猜你喜欢
  • 2015-05-28
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 2020-10-26
相关资源
最近更新 更多