Jak*_*ake 3 ruby ruby-on-rails
我认为应该公正地陈述我认为我所知道的事情以及我所做的事情:
1)我创建了应用程序并进行了第一次数据库迁移; 我知道有我的开发,测试和生产数据库.dev db有一个名为'wines'的表.
2)我制作了一个创建必要文件的脚手架.
3)设置基本索引/更新/销毁方法,我可以浏览页面.
4)从我收集的内容来看,ActiveRecord类"Wine"会自动从数据库继承属性吗?每列都是一个属性,表'wines'中的每一行都是一个可能实例化的对象,可以从wine_controller脚本中调用.
我现在遇到的问题是我想创建一个所有控制器都使用的通用布局.唯一会改变的是页面标题,可能是标题中的一些<link>标记,<body>属性(最有可能是javascript onload事件)以及<body>标记内的任何内容.
我发现自己正在寻找能够做我想做的功能(比如"favicon_link_tag","stylesheet_link_tag"和"auto_discovery_link_tag"......)但是找不到合适的地方给他们!我知道这与我对事物的执行/继承方式缺乏了解有关.例如,如果我在application_controller.rb中声明@pageTitle并在ApplicationHelper中使用@pageTitle则不起作用.甚至在application_controller.rb中使用"stylesheet_link_tag"会引发错误.我只是没有得到什么.
在时间执行,范围等方面,每件事物如何与另一件事物相关?
在"app/views"目录中有一个名为"layouts"的文件夹.默认情况下,应该有一个"application.html.erb"文件,但如果没有,您可以创建它.
您的"应用程序"布局文件是任何视图使用的默认布局文件.但是,如果您希望特定控制器使用其他视图,则可以覆盖此视图.看到这个railscast,这个也很有帮助.
要理解的主要内容是,任何特定视图中的内容都会显示在yield方法在应用程序布局中出现的位置.主'yield'块获取由控制器操作指定的视图文件,但您可以在任何视图中标记任何内容以将其传递给另一个yield块.例如,您提供的"标题"示例可以传递到应用程序布局的头部.有关详细示例,请参阅此railscast.
有关更多信息,请阅读Rails指南,您可能需要考虑选择Rails入门书.
我用" Beginning Rails 3 " 弄湿了脚,这是对框架的一个非凡的介绍.这本书有几天了,这对我来说都很有意义,而且我的发展速度比以往任何时候都快.一旦你了解它,Rails就会晃动,但绝对值得翻阅一本书.
请继续提问,如果可以,我会帮忙:)
-EDIT-要回答关于控制流的问题,它基本上是这样的:
您的浏览器发送特定URL的GET请求.
路由器接受该请求,将其与控制器操作匹配,触发该控制器操作,并向控制器提供与该请求相关的任何参数.例如:如果您请求example.com/posts/123?color=red这将触发SHOW您的操作posts_controller,并将{:color =>'red'}传递给params哈希.你可以使用它来访问它params[:color]
控制器动作完成它的任务,当它完成时它会渲染输出.默认情况下,它会呈现位于其中的任何视图app/<controller_name>/<action_name>,并且将与适合于请求的扩展名匹配的任何文件(即,将触发AJAX请求并触发<action_name>.js.erbGET请求<action_name>.html.erb.
您可以使用该render方法覆盖它,例如,render 'foo/bar'使用FooController的视图传递渲染,使用Bar动作而不是当前操作.
请注意,无论您呈现什么,视图可用的数据都是路由器触发的特定控制器操作中的任何内容,而不是"通常"呈现该视图的控制器操作.
使用调用它的控制器中的数据解析视图文件.如果您有任何content_for方法,那么content_for块内的视图代码将转到您告诉它的位置,否则其他所有内容将转到application布局中的主YIELD块(或控制器指定的任何布局).
解析应用程序布局,并将视图中的内容插入适当的区域.
该页面将提供给用户.
这在某些方面是简化,但我认为它回答了你的问题.再次,随时随地问:)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |