我对Rails相当新,并且在将新的html.erb页面链接到时遇到了一些问题 我的导航标签。
我使用带有projects_controller.rb的Scaffolding创建了一个应用程序。我当然有index.html.erb,它显示我的projects_path,它还包含我所有项目的表。 我有新的,编辑,销毁,更新和显示。 Show包含projects_path的指定项目。好的,我现在尝试做的是使用projects_controller.rb创建(2)新页面。所以我去了并添加了def deinquent和def。两者都模仿def索引,因为我想要在这两个页面上完全相同的功能。我创建了(2)新的html.erb页面以及名称delinquent.html.erb和closed.html.erb。我希望这些页面的行为就像索引页面一样,但只显示Delinquent和Closed Projects,而不是像index.html.erb上显示的那样可用的所有项目。我有我的导航栏,导航栏内部,导航,导航拉动所有到位。我有(3)链接准备好了,只是不知道如何将我新创建的页面链接到最后2个链接:
<li><%= link_to "Active Projects", projects_path></li>
<li><%= link_to "Delinquent Projects", '#' %></li> # I want to link this to delinquent.html.erb
<li><%= link_to "Closed Projects", '#' %></li> # I want to link this to closed.html.erb
答案 0 :(得分:2)
在您的控制器中
def index
@project = Project.all
end
def delinquent
@projects = Project.delinquent_projects
render :template => :index
end
def closed
@projects = Project.closed_projects
render :template => :index
end
您还可以将index.html的内容提取为部分(标题除外),并在相应的视图中呈现部分
在config / routes.rb中(位于文件顶部)
match 'projects/delinquent' => "projects#delinquent", :as => :delinquent_projects
match 'projects/closed' => "projects#closed", :as => :closed_projects
在视图中
<li><%= link_to "Active Projects", projects_path %></li>
<li><%= link_to "Delinquent Projects", delinquent_projects_path %></li>
<li><%= link_to "Closed Projects", closed_projects_path %></li>
答案 1 :(得分:1)
rake routes
会显示您当前的路线及其路径。只需将_path
或_url
添加到最后。
答案 2 :(得分:1)
你走在正确的道路上,你还需要做更多的事情。如果您已将以下控制器操作添加到projects_controller.rb,
def delinquent
end
def closed
end
并且您已经创建了视图,您需要做的就是定义路径。这是在config目录中的routes.rb文件夹中完成的。将这两行添加到文件中,您应该很高兴。
get 'delinquent_projects' => 'projects#delinquent', as: 'delinquent_projects'
get 'closed_projects' => 'projects#closed', as: 'closed_projects'
现在,在您看来,您可以访问以下rails帮助
delinquent_projects_path
closed_projects_path
在您尝试使用它们之前,请在终端中运行“rake routes”以查看它们是否已正确创建。
祝你好运,欢迎来到Rails!