当前位置:  开发笔记 > 编程语言 > 正文

Ruby on Rails中的欢迎/主页 - 最佳实践

如何解决《RubyonRails中的欢迎/主页-最佳实践》经验,为你挑选了7个好方法。

我的主页(或欢迎页面)将包含来自两个模型的数据(我们称之为作者和帖子).我是rails的新手,并不确定实现这一目标的最佳方法是什么.

我应该创建一个名为welcome的新控制器,它从作者和帖子中收集数据,然后在欢迎索引视图中显示它们吗?或者我应该在帖子模型下有一个欢迎视图,它也可以从作者那里获取数据?或任何其他方式来实现这一目标?

我理解如何在技术上完成所有这些,但只是不确定使用rails框架的最佳实践方法是什么.



1> user664833..:

似乎没有一个单一的最佳实践.

(1)标准config/routes.rb文件似乎建议应该处理根页面(或主页/欢迎页面)welcome#index.如果您受到指导,那么要生成相应的welcome#index控制器/操作,您可以使用以下命令:

rails generate controller Welcome index

然后,在config/routes.rb,你可以删除get "welcome/index"由生成器自动添加的GET路由(),并将根路由root 'welcome#index'(或root :to => 'welcome#index'在Rails中< 4)放在文件的顶部,因为它可能是你最受欢迎的路由,应该先匹配.

还记得public/index.html在Rails中删除< 4.

(2)的官方Ruby on Rails的行进引导件使用PagesController.它实际上表明pages#main,虽然对我来说更合理pages#home(因为"主页"是无处不在的术语/概念).此外,该控制器可以处理其他面向页面的动作,如pages#about,pages#contact,pages#terms,pages#privacy,等.

(3)的on Rails的Ruby的教程,去与static_pages#homestatic_pages#help等等,虽然我不喜欢与"静",表示该控制器的想法.这些页面仍然可能会有一些动态方面,尤其是主页!

(4)虽然它没有讨论如何处理主页,但半静态页面上的RailsCast#117提出了另一套显示资源的方法.

我觉得偏向1和/或2.使用"和"方案,你可以使用welcome #index和pages#about等,而使用"or"方案,你可以使用#home,pages#about,如果被迫选择,我会选择2,因为你最终会得到更少的代码.除了"静态"这个词之外,顺便说一下,2和3几乎是一样的.


不错的答案,我会选择2)页面#home.
恕我直言,@ user664833的回答应该是接受的答案.表达清晰的研究和考虑的逻辑.

2> Robert K..:

问题是,您的主页只是一个登录页面还是一组页面?如果它只是一个目标网页,您不希望您的用户长时间在那里闲逛,除非去其他地方.如果它是一组页面,或类似于现有组,您可以向控制器添加最喜欢的操作.

我为当前项目所做的是创建一个名为controller的控制器Static,因为我需要3个静态页面.主页是其中之一,因为除了去其他地方之外没有任何东西可以看或做.

要映射默认路由,请使用以下内容routes.rb:

# Place at the end of the routing!
map.root :controller => 'MyController', :action => :index

在我的情况下,这将是:

map.root :controller => 'static', :action => :index

如果您愿意,可以为此主页创建一个控制器.我称之为主要内容,或者您​​可以记住与主页相关的内容.从那里,您可以获取数据和模型,并按照输出视图.

class MainController < ApplicationController
  def index
    @posts = Posts.find(:all, :limit => 10, :order => 'date_posted', :include => :user)
  end
end

假设您正确定义了模型关系,匹配它的模板将非常简单.

祝你好运,希望这会有帮助.



3> John..:

当我第一次启动Rails时,我问自己这样的事情.这是你需要知道的:

模型不一定与控制器和视图直接相关.

也就是说,特定的控制器/视图组合可以与生成该特定页面所需的模型一起使用.

控制器的目的是准备您需要显示的数据集,而不管用于存储该数据的模型.

视图的目的是以最合适的方式显示该数据.

换句话说,控制器/视图组合永远不会在特定模型之下.他们使用模型,但在任​​何层次关系中都不属于它们.事实上,他们与他们使用的任何模型都是对等的.

我认为混淆来自AWDR中的脚手架生成器示例和其他介绍性文本,例如:

ruby脚本/生成脚手架模型控制器

我知道模型和控制器/视图之间的这种隐含关系让我感到困惑.但真的没有严格的关系.如果有,那么使用MVC方法做任何复杂的事情都是非常困难的.显然,事实并非如此.

希望这可以帮助.

- 约翰


你对这个问题的答案是什么?

4> allesklar..:

最好的做法是你的第一个建议.创建一个"欢迎"控制器,并从您想要的任何模型调用记录.有一个根路由指向该控制器.非常干净和适当.



5> irakli..:

请注意,在Rails3中,正确的处理方法是将以下行添加到routes.rb文件的末尾:

root :to => "welcome#index"

并删除public/index.html.erb.

另请注意,welcome#index对应于WelcomeController中的索引操作,而The Wicked Flea的答案代码如下:

class WelcomeController < ApplicationController
  def index
    @posts = Posts.find(:all, :limit => 10, :order => 'date_posted', :include => :user)
  end
end



6> Naoise Golde..:

这个答案是Rails 3.2.1的答案.

首先为页面设置一个Controller,例如static:

$ rails generate controller static

在档案中app/controllers/static_controller.rb:

class StaticController < ApplicationController
    def index       
    end
end

创建新的View文件 app/views/index.html.erb

最后配置你的config/routes.rb:

MyApp::Application.routes.draw do
   match 'home', :to => "static#index"
   root :to => "static#index"
end

这将生成两者/home/转到您刚刚创建的View文件中的任何内容.



7> Mike Woodhou..:

尽可能正确地创建一个名为的新控制器.SummaryController?StartController?DailyFrontPageController?你会有一个想法.

不仅如此,我还要认真考虑创建一个新模型,而不是基于ActiveRecord的模型,它从您的作者和帖子模型(或其真实姓名)中收集信息,以便在您的视图中显示.另一种方法是在控制器中组装数据,这几乎肯定会很混乱 - 每当我尝试它时,我都尝试了很多.一个单独的模型似乎最终更加整洁.

如果处理相对简单,为什么不首先尝试在控制器中构建数据,然后将输出包装在Struct中,然后用实际类替换Struct并在那里移动构造,一直重构.它不应该给总时间增加太多(大部分代码都可以重复使用),你会很好地了解什么最适合你.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有