質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Gitlab CE

GitLabのオープンソース版で、Community Editionのこと。 deb、rpmパッケージで提供されており、比較的簡単にインストールすることができます。

Q&A

解決済

1回答

2359閲覧

[rails][gitlab]あるフォルダのディレクトリの画像を表示する

tommy19970714

総合スコア71

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Gitlab CE

GitLabのオープンソース版で、Community Editionのこと。 deb、rpmパッケージで提供されており、比較的簡単にインストールすることができます。

0グッド

0クリップ

投稿2016/03/06 16:39

編集2016/03/08 02:04

gitlabをベースにして、サイトを作っています。
gitlabのプロジェクト画面で、そのプロジェクトのディレクトリで「media」フォルダに入っているすべての画像を表示するというものを実装しようと考えています。

以下のディレクトリにある_home_panel.html.hamlというファイルが、プロジェクト画面の上部にあたります。
gitlabのコードhttps://github.com/gitlabhq/gitlabhq/tree/master/app/views/projects

プロジェクト画面で以下のようにすべての画像を表示させたいのですが、gitlabにおいて、ディレクトのファイルが入っている変数がわかりません。プロジェクトにできている「media」フォルダに入っている画像を表示するにあたって、必要な画像ファイルのディレトリを表示する変数を教えていただきたいです。よろしくお願いします。

イメージは以下のようなものです。
イメージ説明

例えば、adsadaというプロジェクトの中にあるmediaというフォルダの中のすべての画像(lemon.jpgとapple.jpgなど)を表示するようなことをしようと思っています。
イメージ説明

_home_panel.html.hamlを修正したコードは以下のようになっています。
加えた部分は.flexsliderの部分になります。そこで%img{:src =>" "}となる部分のディレクトリの指定するにあたってどこを指定すればいいいのかが分からないです。

ruby

1- empty_repo = @project.empty_repo? 2.project-home-panel.cover-block.clearfix{:class => ("empty-project" if empty_repo)} 3 .project-identicon-holder 4 = project_icon(@project, alt: '', class: 'project-avatar avatar s90') 5 .project-home-desc 6 %h1= @project.name 7 - if @project.description.present? 8 = markdown(@project.description, pipeline: :description) 9 10 - if forked_from_project = @project.forked_from_project 11 %p 12 Forked from 13 = link_to project_path(forked_from_project) do 14 = forked_from_project.namespace.try(:name) 15 .cover-controls.left 16 .visibility-level-label.has_tooltip{title: project_visibility_level_description(@project.visibility_level), data: { container: 'body' } } 17 = visibility_level_icon(@project.visibility_level, fw: false) 18 = visibility_level_label(@project.visibility_level) 19 .flexslider 20 %ul.slides 21 %li 22 %img{:src => "!!!!!ここの部分をプロジェクトのディレクトリのmediaフォルダ以下の画像ファイルにしたい!!!!!"} 23 %li 24 %img{:src => "!!!!!ここの部分です。!!!!!"} 25 :javascript 26 $(function(){ 27 SyntaxHighlighter.all(); 28 }); 29 $(window).load(function(){ 30 $('.flexslider').flexslider({ 31 animation: "slide", 32 animationLoop: false, 33 itemWidth: 210, 34 itemMargin: 5, 35 minItems: 2, 36 maxItems: 4, 37 start: function(slider){ 38 $('body').removeClass('loading'); 39 } 40 }); 41 }); 42 43 44 .cover-controls 45 - if current_user 46 = link_to namespace_project_path(@project.namespace, @project, format: :atom, private_token: current_user.private_token), class: 'btn btn-gray' do 47 = icon('rss') 48 - access = user_max_access_in_project(current_user.id, @project) 49 - can_edit = can?(current_user, :admin_project, @project) 50 - if access || can_edit 51 %span.dropdown.project-settings-dropdown 52 %a.dropdown-new.btn.btn-gray#project-settings-button{href: '#', 'data-toggle' => 'dropdown'} 53 = icon('cog') 54 = icon('angle-down') 55 %ul.dropdown-menu.dropdown-menu-right 56 - if can_edit 57 %li 58 = link_to edit_project_path(@project) do 59 Edit Project 60 - if access 61 %li 62 = link_to leave_namespace_project_project_members_path(@project.namespace, @project), 63 data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do 64 Leave Project 65 66 .project-repo-buttons 67 .split-one.count-buttons 68 = render 'projects/buttons/star' 69 = render 'projects/buttons/fork' 70 71 .clone-row 72 .project-clone-holder 73 = render "shared/clone_panel" 74 75 .split-repo-buttons 76 .btn-group.pull-left 77 = render "projects/buttons/download" 78 = render 'projects/buttons/dropdown' 79 80 = render 'projects/buttons/notifications' 81 82:javascript 83 new Star();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

blob_controller

gitlab_routing_helper.rb

上記のコードから、以下を呼び出すことでgitlabのファイル一覧を持ってくることができることが分かりました。

ruby

1@repository.tree(@commit.id, @path)

よって以下のように実装しました。

haml

1 .flexslider 2 %ul.slides 3 - @repository.tree(@commit.id, "media/").blobs.each_with_index do |file,i| 4 - if File.extname(file.path).downcase == ".png" || File.extname(file.path).downcase == ".jpg" 5 %li 6 - dir = "master/" + file.path 7 %img{:src => namespace_project_raw_path(@project.namespace, @project, dir) }

投稿2016/03/17 14:50

tommy19970714

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問