您的位置:首页 > 产品设计 > 产品经理

《Agile web Development With Rails (4th Edition·第四版)》翻译二

2012-01-19 15:03 260 查看
个人翻译的,水平有限,请多包涵。转载请注明出处,谢谢合作!

-------------------------------------------------------------------------------------

2.2 将页面连在一起

现在所做的还是个不成熟的应用,它只有一个页面。来看看怎样为“HelloWorld”应用增加了不起的设计吧!

通常,应用中的每个页面与单个视图相关联,在本例中,我们又要用新方法来控制页面了。我们将为两个方法采用同一个controller。当然,它不需要作为一个新的case,因为我们目前去新建另一个controller是不合理的。

我们已经为这个controller定义了一个goodbye方法,所以现在要做的就是在app/views/say下建立新模板。这次的模叫:goodbye.html.erb,因为模板是根据它相关的动作而命名的。



再次打开浏览器,但这次在http://localhost:3000/say/goodbye地址下打开。你将看到如下类似画面:



现在我们将两个页面连接起来。我们在hello页面上放入一个连到goodbye页面的链接,取代调度算法。在真实的应用中,我们可能想要制作这样的按钮,但目前我们只使用超链接。

我们已知Rails惯于将URL解析到特定controller的action中,所以我们可采用的简单方法是将这个URL惯例应用到超链接中去。

hello.html.erb将包含如下内容:



goodbye.html.erb将指向另一个方向:



这方法当然奏效,但还是有些不牢靠。如果我们将应用挪到服务器上的其他位置,那这些URL将不再是有效的。该方法把我们对Rails URL的假设编入代码之中,将来很可能另一个版本的Rails不再采用此格式。

幸运的是,我们用不着冒险。Rails自带了一堆帮助方法可以在试图模板中使用,这里我们将使用帮助方法“link_to”,它可以为行为创建一个超链接(“Link_to”方法还可以做很多事,现在先让我们温柔的对待它),使用“link_to”,hello.html.erb变为了如下摸样:



这里有个link_to方法调用方在ERB序列<%=---%>中。它创建了一个可以引用goodbye action的链接。Link_to方法的第一个参数将会作为在超链接中显示的文本,第二个参数则告诉Rails要创建一个到goodbye action的链接。

让我们停下来,想想刚才是怎样创建了这个链接。我们写了如下代码:



首先,link_to是个方法调用(在Rails中,我们调用那些让写模板变得更简单的方法,helpers),如果你曾用过java语言,你可能会惊讶在ruby的方法参数周围竟然没有圆括号!没关系,只要你愿意,尽管加上去好了。

say_goodbye_path是Rails预先计算的一个值,用来确定应用视图的路径。它的值等于“say/goodbye”。之后你将看到Rails具有一种能力,就是它可以为所有在应用中用到的路径命名。

OK,现在回来。如果我们在浏览器中打开hello页面,它将显示包含goodbye页面的连接,如下所示:



我们可以在goodbye.html.erb中做相关变化,将它与hello页面相连:



现在,我们已经完成了这个玩具一样的应用。在这过程中我们验证了所安装的Rails功能良好。在这简要概括之后,是时候做个真正的应用了。

游戏时间:

现在是靠你们自己完成的时候了:

--用下列表达式做做试验:

Addition: <%= 1+2 %>

Concatenation: <%= "cow" + "boy" %>

Time in one hour: <%= 1.hour.from_now %>

--调用下面的Ruby方法将返回当前目录的文件列表:



用他在你控制器的行为中设立一个临时变量,然后在相关视图中显示该文件列表。

窍门:你可以采用以下代码显示列表:



你也可以为此列表用上<ul>标签

想找更多窍门请到http://www.pragprog.com/wikis/wiki/RailsPlayTime.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: