我如何link_to html.erb页面?

时间:2013-12-23 17:14:17

标签: html css ruby-on-rails ruby

我对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

3 个答案:

答案 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!