我需要帮助了解在初学者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文件或视图文件的内容。 (但是这个文件确实已经执行或编译了< - 不确定我的术语)
答案 0 :(得分:4)
这是框架&#34;魔术&#34;。它在文档中涵盖了更多here; &action;运动名称==布局文件名&#39;是通过抽象消除复杂和无聊的东西来加快开发时间的方法之一。如果我必须处理所有代码来为每个新控制器渲染html,我将落后大约五年。
路径文件 - 实际上是你生成的大多数rails代码 - 可以被认为是用代码编写的更多配置文件,而不是一个完全自包含的路由程序。
这个控制器类继承自ApplicationController,而ApplicationController又继承自ActionController :: Base--它处理大部分的设置和渲染。由于复杂的继承和类结构,在学习ruby的这个阶段通过自己阅读可能太复杂了,但上面的文档有助于解释你需要在功能上知道什么。
但是,如果你想在Ruby中自己手动处理请求,这也是学习js到学习ruby和rails的一个很好的桥梁,看看像Sinatra更直接的东西,我们应该说&#39;节点状&#39;对于服务器。
答案 1 :(得分:1)
是;您在问题中学到和描述的大部分内容都可以称为Rails架构/框架(具有不同组件和基础架构的设计,如模型,视图,控制器,帮助器等),以及您作为ruby on 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 :(得分:1)
如果您想了解Rails路线的工作原理,请访问Rails Routing from the Outside In,之后,您可以阅读API并获取更多详情