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

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

ただいまの
回答率

90.53%

  • Ruby

    9229questions

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

  • Ruby on Rails

    8654questions

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

  • Ruby on Rails 4

    2535questions

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

  • GitLab

    154questions

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

  • Gitlab CE

    21questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,063

tommy19970714

score 65

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 =>"  "}となる部分のディレクトリの指定するにあたってどこを指定すればいいいのかが分からないです。

- empty_repo = @project.empty_repo?
.project-home-panel.cover-block.clearfix{:class => ("empty-project" if empty_repo)}
  .project-identicon-holder
    = project_icon(@project, alt: '', class: 'project-avatar avatar s90')
  .project-home-desc
    %h1= @project.name
    - if @project.description.present?
      = markdown(@project.description, pipeline: :description)

    - if forked_from_project = @project.forked_from_project
      %p
        Forked from
        = link_to project_path(forked_from_project) do
          = forked_from_project.namespace.try(:name)
  .cover-controls.left
    .visibility-level-label.has_tooltip{title: project_visibility_level_description(@project.visibility_level), data: { container: 'body' } }
      = visibility_level_icon(@project.visibility_level, fw: false)
      = visibility_level_label(@project.visibility_level)
  .flexslider
    %ul.slides
      %li
        %img{:src => "!!!!!ここの部分をプロジェクトのディレクトリのmediaフォルダ以下の画像ファイルにしたい!!!!!"}
      %li
        %img{:src => "!!!!!ここの部分です。!!!!!"}
  :javascript
    $(function(){
      SyntaxHighlighter.all();
    });
    $(window).load(function(){
      $('.flexslider').flexslider({
        animation: "slide",
        animationLoop: false,
        itemWidth: 210,
        itemMargin: 5,
        minItems: 2,
        maxItems: 4,
        start: function(slider){
          $('body').removeClass('loading');
        }
      });
    });


  .cover-controls
    - if current_user
      = link_to namespace_project_path(@project.namespace, @project, format: :atom, private_token: current_user.private_token), class: 'btn btn-gray' do
        = icon('rss')
      - access = user_max_access_in_project(current_user.id, @project)
      - can_edit = can?(current_user, :admin_project, @project)
      - if access || can_edit
        %span.dropdown.project-settings-dropdown
          %a.dropdown-new.btn.btn-gray#project-settings-button{href: '#', 'data-toggle' => 'dropdown'}
            = icon('cog')
            = icon('angle-down')
          %ul.dropdown-menu.dropdown-menu-right
            - if can_edit
              %li
                = link_to edit_project_path(@project) do
                  Edit Project
            - if access
              %li
                = link_to leave_namespace_project_project_members_path(@project.namespace, @project),
                  data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do
                  Leave Project

  .project-repo-buttons
    .split-one.count-buttons
      = render 'projects/buttons/star'
      = render 'projects/buttons/fork'

    .clone-row
      .project-clone-holder
        = render "shared/clone_panel"

      .split-repo-buttons
        .btn-group.pull-left
          = render "projects/buttons/download"
          = render 'projects/buttons/dropdown'

      = render 'projects/buttons/notifications'

:javascript
  new Star();
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

blob_controller

gitlab_routing_helper.rb

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

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


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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Ruby

    9229questions

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

  • Ruby on Rails

    8654questions

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

  • Ruby on Rails 4

    2535questions

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

  • GitLab

    154questions

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

  • Gitlab CE

    21questions

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