我正在构建一个rails应用程序,用户可以通过表单输入将URL提交到我的postgresql数据库中,但它似乎根本没有提交到数据库中,它也没有给我错误。当用户发布网址时,它唯一给我的是:
找不到UrlController #create的模板,渲染头:no_content 完成204无内容75ms(ActiveRecord:4.6ms)
所以它的工作方式是: 用户向'/ url'发出请求,他们会在表单中输入网址(例如:'google.com'),此表单会发布到'/ url'
在我的UrlController中,我有:
class UrlController < ApplicationController
def index
@url = Url.all
end
def create
puts params[:url]
Url.new(url: "foo")
end
端
这是我的postgres url数据库的样子:
header_parser2_development=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------------------+-------+---------
public | ar_internal_metadata | table | minimoe
public | schema_migrations | table | minimoe
public | tags | table | minimoe
public | urls | table | minimoe
(4 rows)
和网址模型:
header_parser2_development=# SELECT * FROM urls;
id | url | created_at | updated_at
----+-----+------------+------------
(0 rows)
任何人都可以解释一下,以及如何解决这个问题?根据文档,这应该是有效的,我没有任何错误。
答案 0 :(得分:0)
执行Url.new
时,它只构建对象,但需要save才能将其持久保存到数据库中:
def create
@url = Url.new(url: params[:url])
if @url.save
# Handle success
redirect_to urls_path, notice: "Url saved"
else
# Handle failure
end
end
默认情况下,Rails会尝试使用操作名称呈现模板,在这种情况下,它正在寻找create
模板。因此,在创建对象后,您可以将其重定向到另一个操作,例如我在示例中显示的show
或index
。
答案 1 :(得分:0)
我将它切换到Url.create,现在效果很好