-1

我对 Rails 非常陌生,并且正在学习 RESTful API 教程,所以如果它的质量不是很好,请原谅,因为我同样也是这类术语的初学者。

我用命令创建了一个控制器小猫rails g controller kitten index

在 index 方法中我发布了这段代码 -

class KittenController < ApplicationController
  def index
    require 'open-uri'

    kittens = open('http://placekitten.com/')
    response_status = kittens.status
    response_body = kittens.read[559, 441]

    puts response_status
    puts response_body
  end
end

match ':controller(/:action(/:id))(.:format)'并且没有评论routes.rb

当我浏览这个 -http://localhost:3000/kitten

这就是我在浏览器中得到的 -

小猫#index

在 app/views/kitten/index.html.erb 中找到我

这在我的命令行中 -->

比利

现在我的问题是为什么会这样,尽管我期待它出现在我的浏览器中,但猫显示在命令提示符而不是浏览器中..我是休息资源的新手,所以如果它是一个坏的,请原谅:(

4

3 回答 3

3

我不知道你在学习什么教程,但是这样做对于 Rails 来说似乎是一件非常奇怪的事情,尤其是学习 RESTful API。

无论如何,puts控制器中的 in 将文本输出到 Ruby 的标准输出,这将是服务器启动的终端。这就是为什么它出现在控制台而不是浏览器中的原因:puts把它放在那里。

如果您希望它出现在网页中,您需要为该控制器操作创建一个视图。也许进一步按照您的教程进行操作将让您到达那里:如果没有,您可能想找到一个更好的。

于 2013-03-21T17:15:19.300 回答
3

您应该阅读Model-View-Controller rails 指南

控制器提供模型和视图之间的“粘合剂”。在 Rails 中,控制器负责处理来自 Web 浏览器的传入请求,询问模型以获取数据,并将该数据传递给视图以进行展示。

在控制器中定义变量并将其显示在视图中:

class KittenController < ApplicationController
  def index
    @variable = 'Hello World'
  end
end

在您看来(app/views/kitten/index.html.erb):

<%= @variable %>
于 2013-03-21T17:27:08.607 回答
0

Rails 控制器使用渲染调用设置响应。当调用未执行时,它会实例化适当的视图并呈现该视图。在你的情况下是 index.html.erb

试试这个:

render :text => kittens.read[559, 441], :status => kittens.status
于 2013-03-21T17:20:39.730 回答