我创建了一个简单的应用程序并编辑了 index.erb 文件,这样我就有了一个带有文本框和按钮的简单视图。
现在,当我单击该按钮时,我希望它导航到新视图。我知道我们可以添加模型,并且在这些模型中我们有不同的 .erb 文件。但我想创建一个 .erb 文件或将其添加到现有模型中,以便我可以更改编辑视图并在按下按钮时调用该视图。
就像我们必须为每个屏幕创建一个模型一样?
我不知道该怎么做,我尝试搜索但到目前为止没有帮助。
不,您不必为每个视图(.erb)创建模型。如果您想向现有模型添加新视图,只需将新方法(def)添加到控制器(.rb)中,并添加与新方法同名的新视图(.erb)。
假设在 app/Demo 中存在一个模型 DemoController.rb。你可以像添加新方法一样
class DemoController < Rho::RhoController
...
def index
end
def new_method
end
end
要从索引视图导航到 new_method,您可以编写
<button onclick="location.href='/app/Demo/new_method'">new method</button>
或者
<button onclick="location.href='<%= url_for :action => :new_method %>'"
>new method</button>
并不是你必须为每个屏幕创建一个模型,而是相反。您需要为每个模型创建视图的接口。
您为什么不从本指南开始并继续了解基础知识。
除了 CRUD 接口?您可以将视图文件直接添加到与此模型关联的控制器的视图文件夹中。例如,如果模型是 post.rbapp/models
并且它有一个相应的控制器并且它有相应的视图,那么您可以使用控制器中的相应方法将您的视图添加到posts_controller.rb
文件夹中,该方法将呈现该视图,前提是有一个路由文件中的那个。app/controllers
app/views/posts
app/views/posts
config/routes.rb
假设我想向landing_page.html.erb
Post 添加一个视图。我会在其中添加一个方法posts_controller.rb
(尽管这不是强制性的。但是,在渲染视图之前检查一些条件可能对您有用):
class posts_controller < ApplicationController
...
def landing_page
end
end
在 app/views/posts 目录中添加一个视图:
# app/views/posts/landing_page.html.erb
在 config/routes.rb 文件中添加一个路由:
map.resources do
member do
get :landing_page
end
end
现在,您可以访问该页面http://localhost:3000/posts/:id/landing_page
。