0

我有一个应用程序,它从数据库中获取文件的路径并将其呈现为 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 是正在读取的文件。另外,我的项目数据库有一个 github_link 属性,它存储GitRepos/bootstrap/Readme.md

模型

链接会根据项目而变化。Project 模型具有这些属性-> 标题和 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'
4

1 回答 1

0

尝试

match '/GitRepos/:github_link'=>'markdowns#view'
于 2013-02-28T09:45:49.610 回答