2012-09-11 1 views
1

Я совершенно не знаком с Rails, и я пытаюсь сделать каждый тип файла, который находится в каталоге, имеет свой собственный значок, я могу получить его, чтобы показать его, пожалуйста, помогите ? Вот что я до сих пор.Пытается, чтобы каждый тип файла имел свой собственный значок в рельсах. 3.2

Контроллер:

class DocsController < ApplicationController 
def port 
    @files = Dir.glob("public/folder/*") 

    filetype = [".pdf", ".txt"] 

    if filetype.include? ".pdf" 
    @extension = "pdf.png" 
    elsif filetype.include? ".txt" 
    @extension = "text.png" 
    else 
    @extension = "folder.png" 
    end 
end 
end 

Вид:

<% @files.each do |file| %> 
<div class="filediv"> 
    <%= image_tag @extension, :size => "150x150" %> 
    <p><%= file.gsub("public/folder/", "") %></p> 
</div> 
<% end %> 

Это приводит к всему имеющему значок PDF, кто-то может сказать мне, что я делаю неправильно?

Благодаря

+0

Ваш if filetype.include? ('. Pdf') всегда возвращает true. Вам нужно циклически перемещаться по файлам. – tommasop

+0

Спасибо, как я мог его переписать? – Ollie2619

ответ

1

Я думаю, вам нужно добавить вспомогательный метод

def extension_image(file) 
    ext =File.extname(file) 
    if ext==".pdf" 
    "pdf.png" 
    elsif ext == ".txt" 
    "text.png" 
    else 
    "folder.png" 
    end 
end 


<%= image_tag extension_image(file), :size => "150x150" %> 

типа файла = [ ".pdf", ".txt"]

удалить этот код.

if filetype.include? ".pdf" 
    @extension = "pdf.png" 
    elsif filetype.include? ".txt" 
    @extension = "text.png" 
    else 
    @extension = "folder.png" 
    end 
end 

Теперь, почему всегда отображает расширение Pdf это просто

[1,2,3].include?(1) it's always true so no further checking 

Checkout, как включать в себя работу в массиве.

+0

Спасибо Amar, я не могу голосовать, так как я только что подписался, но большое спасибо, можете ли вы объяснить часть ext = File.extname (file), пожалуйста? – Ollie2619

+0

Я нашел его на Rails API, еще раз спасибо! – Ollie2619