找不到UrlController #create的模板,渲染头:no_content

时间:2017-05-23 02:49:21

标签: ruby-on-rails postgresql

我正在构建一个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)

任何人都可以解释一下,以及如何解决这个问题?根据文档,这应该是有效的,我没有任何错误。

2 个答案:

答案 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模板。因此,在创建对象后,您可以将其重定向到另一个操作,例如我在示例中显示的showindex

答案 1 :(得分:0)

我将它切换到Url.create,现在效果很好