我有一个应用程序,它从数据库中获取文件的路径并将其呈现为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'
答案 0 :(得分:0)
尝试
match '/GitRepos/:github_link'=>'markdowns#view'