我创建了一个简单的应用程序并编辑了index.erb文件,这样我就可以看到一个带有文本框和按钮的简单视图。
现在,当我点击该按钮时,我希望它导航到新视图。 我知道我们可以添加模型,在该模型中我们有不同的.erb文件。 但我想创建一个.erb文件或将其添加到现有模型,以便我可以更改编辑视图并按下按钮调用该视图。
我们必须创建一个模型吗?
我不知道该如何做同样的事情,到目前为止,我试过搜索但没有帮助。
答案 0 :(得分:3)
不,您不必为每个视图(.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>
答案 1 :(得分:0)
并不是每个屏幕都要创建一个模型而不是反过来。您需要接口的每个模型都可以创建视图。
为什么不从this guide开始,继续理解基础知识。
除CRUD接口外?您可以将视图文件直接添加到与此模型关联的控制器的视图文件夹中。例如,如果模型是app/models
中的post.rb,并且posts_controller.rb
中有相应的控制器app/controllers
,并且app/views/posts
中有相应的视图,那么您可以添加视图使用控制器中相应方法的app/views/posts
文件夹将提供该视图,并在config/routes.rb
文件中提供该路径。
说我想在Post上添加landing_page.html.erb
视图。我会在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
页面。