【问题标题】:Rails Empty Controller Serves Correct View fileRails 空控制器提供正确的视图文件
【发布时间】:2018-06-04 17:09:54
【问题描述】:

我需要帮助了解在初学者 Rails 应用程序中创建控制器和路由所采取的步骤。在过去的 6 个月里,我一直在使用 Javascript 进行编码,现在我正在尝试使用 Ruby on Rails。我将把我的问题集中在控制器和路由的外观和工作方式以及它们在 Rails 中的工作方式上。

首先,

Rails generate controller welcome index

我在终端中运行了它,它的行为符合预期:mydomain/welcome/index 提供了一个欢迎页面。

我的问题是关于使这成为可能的路线和控制器。

在 routes.rb 中,我们只有一行代码:

get 'welcome/index'

我假设这个文件正在接受一个对 mydomain/welcome/index 的客户端请求,然后将此请求发送到 app 文件夹中的 welcome_controller.rb。如果这确实是正确的,为什么我们没有在这个文件中看到将请求传递给控制器​​的逻辑或过程?

第二个问题:一旦我们打开welcome_controller.rb,我们就会看到这个

class WelcomeController < ApplicationController
    def index
    end
end

我没有看到任何指定应用程序查看 index.html.erb 文件或视图文件的内容。 (但这个文件确实被执行或编译了

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    是的;您在问题中学到和描述的大部分内容都可以称为 Rails 架构/框架(具有不同组件和基础架构的设计,例如模型、视图、控制器、助手等),以及您作为红宝石使用的代码rails (RoR) 程序员将放置,例如在

    def index
    
    end
    

    是将在请求通过时执行的指令。这些是特定于用户案例的请求,例如我想要一个项目列表,我想删除一个项目等。代码将用 ruby​​ 语言编写。我希望我把它作为评论(但评论有不同的目的),因为我相信这里有大师会给出更好的答案! 您可能熟悉的 Javascript 示例是您有 DOM、选择器、事件、操作等,例如:

    $(function(){  // call jQuery
    
        // begin coding (making selection and do action)
    
        $("button").click(function(){  // on event of clicking a button      
        $("h3").css("color", "red");  //do action
        });
    
        }); //end of code
    
    }); // end of jQuery
    

    【讨论】:

      【解决方案2】:

      这是框架的“魔法”。它在文档中涵盖了更多here; 'action name == layout filename' 的约定是通过抽象 去除复杂和无聊的东西来加快开发时间的方法之一。如果我必须处理所有代码来为每个新控制器呈现 html,我将落后大约五年。

      路由文件——实际上是你生成的大部分 Rails 代码——可以被认为更像是一个用代码编写的配置文件,而不是一个自包含的完整路由程序。

      此控制器类继承自 ApplicationController,后者又继承自 ActionController::Base - 它处理大部分设置和渲染。由于复杂的继承和类结构,在学习 ruby​​ 的这个阶段通读一遍自己可能太复杂了,但上面的文档有助于从功能上解释您需要了解的内容。

      但是,如果您想在 Ruby 中自己手动处理请求,这也是从学习 js 到学习 ruby​​ 和 rails 的一个很好的桥梁,请查看像 Sinatra 这样更直接的东西,我们应该说'node-like ' 用于服务器。

      【讨论】:

        【解决方案3】:

        如果您想了解 Rails 路由是如何工作的,请访问Rails Routing from the Outside In,之后您可以阅读API 了解更多详情

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-10
          相关资源
          最近更新 更多