gpt4 book ai didi

ruby-on-rails - 模型、 View 和 Controller 如何连接?

转载 作者:行者123 更新时间:2023-12-04 03:33:20 24 4
gpt4 key购买 nike

我了解模型、 View 和 Controller 在应用程序中扮演的不同角色,但它们是如何相互链接的,例如,一个简单的比较是将 JavaScript 文件与 HTML 文件链接时,标签需要带有 'src ' 引用。

自从学习 Rails 以来,有人告诉我它们是相互关联的,但不知道如何关联。

模型、 View 和 Controller 实际上是如何链接的,为什么 MVC 尤其是 Rails 不需要“src”或类似的东西?

最佳答案

基本上它都是通过路由 Controller 和操作链接起来的。

路由文件(your_app_root/config 中的 routes.rb 文件)有效地拦截传入的 url 并将该 url 映射到 Controller /操作(实际上这是由像 Nginx 这样的网络服务器完成的,然后将请求传递给您的 Rails 应用程序通过像 Unicorn 之类的东西,但这完全是另一个问题)。

因此对于标准的 HTML 站点设置,您可能有一个名为 home 的文件夹,在该文件夹中您可能有一个 index.html

因此,当您导航到 some_url/home/index 时,您将获得在浏览器中呈现的 index.html 文件的内容。

在 RoR 中,为了使它起作用,您需要一个路由来定义一个集合的获取请求(多个或没有传入的参数)

它可能看起来像这样

YourApp::Application.routes.draw do
get 'home', to: 'home#index', as: :home
# etc...

如果您导航到 some_url/home,该路由会将您的浏览器连接到家庭 Controller 上的索引操作

home controller中的index Action 可以是一个空 Action

class HomeController < ApplicationController
def index
end
end

如果您在 app/views/home 文件夹中有一个 index.html.erb,那么您将自动呈现该文件,因为 ActionController 将您告诉它呈现的任何内容转换为 HTML、css 和 javascript 或 json 或 XML如果您正在使用资源路由并且它接收到的请求是 XML 或 JSON 请求,并将结果数据发送回浏览器

如果您想从数据库中显示一些数据,那么 Controller 操作有责任获取该数据并将其填充到一个对象(一个由@符号表示的实例变量)中,您的 View 可以在erb标签

例如

class HomeController < ApplicationController
def index
@some_records = SomeModel.all
end
end

然后可以像这样在 index.html.erb 文件中使用

<ul>
<% @some_records.each do |rec| %>
<li> A record: <%=rec.some_method%> </li>
<% end %>
</ul>

因为你有一个路由,你可以使用路由名称作为链接和按钮的路径,将数据从浏览器发布回服务器,整个过程从头开始。

这并不能严格描述这一切是如何联系在一起的,但应该足够接近,让您了解这一切是如何发生的

关于ruby-on-rails - 模型、 View 和 Controller 如何连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18435453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com