Rails中的Link_to。链接显示自定义

时间:2013-02-28 08:48:15

标签: ruby-on-rails routes link-to

我有一个应用程序,它从数据库中获取文件的路径并将其呈现为html并显示。控制器,视图和路径如下所示:

project/index.html.erb

<p><%= link_to project.title,{:controller => "markdowns" , :action => 'view',       :github_link=>project.github_link},:target=>"_blank"%></p>

markdown_controller

class MarkdownsController < ApplicationController
  def view
    @markdown=MarkdownsHelper.markdown path
  end

  def path
    File.open(Rails.public_path.to_s+params[:github_link].to_s, "rb").read
  end
end

上述控制器中的MarkdownsHelper.markdown方法呈现.md。

markdown/view

<%=raw @markdown %>

routes

resources :projects
match '/GitRepos/'=>'markdowns#view'

问题:

点击prokects / index中的标题后显示的链接是 localhost:3000 / GitRepos?github_link =%2FGitRepos%2Fbootstrap%2FREADME.md

但我希望链接显示为 localhost:3000 / GitRepos / bootstrap / Readme.md

其中bootstrap是Project.title,Readme.md是正在读取的文件。此外,我的Project数据库有一个github_link属性,存储 GitRepos / bootstrap / Readme.md

模型

链接将根据项目而变化。 项目模型具有以下属性 - &gt; title和github_link。 因此,有许多项目和github_link存储位于本地系统中的每个项目的Readme.md文件的路径地址。

我的方法

这是我拥有的解决方案,我对Ruby on Rails的了解很少。如果可以改进,请告诉我。

project/index.html.erb

    <p><%= link_to project.title,{:controller => "markdowns" , :action => 'view',:title=>project.git_name,:id=>project.git_file},:target=>"_blank" %></p>

routes

    match 'GitRepos/:title/:id' =>'markdowns#view'

1 个答案:

答案 0 :(得分:0)

尝试

match '/GitRepos/:github_link'=>'markdowns#view'