2014-05-02 7 views
5

Also, das ist mein erstes Vermittler-Projekt und ich kämpfe mit wie Vermittler Verknüpfungen verwaltet.Middleman Pfade arbeiten nicht am Unterverzeichnis

Wie es ist, habe ich es auf einer GitHub-Seite eingerichtet. Alle meine Assets funktionieren, also habe ich das richtig gemacht, aber die Pfade, die zu den einzelnen Seiten führen, scheitern, weil die Website in einem Unterverzeichnis steht.

Grundsätzlich root/directoryname/index.html funktioniert aber jeder Link geht ein Verzeichnis zurück, also wo ich Root/Verzeichnisname/page.html haben sollte, bekomme ich root/page.html.

Here, have a link to see it live

Hier ist, was meine config.rb wie folgt aussieht:

# Reload the browser automatically whenever files change 
configure :development do 
activate :livereload 
end 

# Methods defined in the helpers block are available in templates 
# helpers do 
# def some_helper 
#  "Helping" 
# end 
# end 

set :css_dir, 'css' 

set :js_dir, 'js' 

set :images_dir, 'img' 

# Build-specific configuration 
configure :build do 
    # For example, change the Compass output style for deployment 
    activate :minify_css 

    # Minify Javascript on build 
    activate :minify_javascript 

    # Enable cache buster 
    activate :asset_hash 

    # Use relative URLs 
    activate :relative_assets 

    activate :directory_indexes 

    # Or use a different image path 
    # set :http_prefix, "/Content/images/" 
end 

activate :deploy do |deploy| 
    deploy.method = :git 
    # Optional Settings 
    # deploy.remote = "custom-remote" # remote name or git url, default: origin 
    # deploy.branch = "custom-branch" # default: gh-pages 
    # deploy.strategy = :submodule  # commit strategy: can be :force_push or :submodule, default: :force_push 
end 

data.works.each do |item| 
    proxy "/references/#{item.clean}.html", "/work.html", :locals => { :code => item }, :ignore => true 
end 

helpers do 
    # Sets the html class to 'active' when the link url is equal to the current page being viewed. 
    # Use just like the link_to helper. 
    # <%= magic_link_to 'Home', '/index.html' %> 
    def magic_link_to(link, url, opts={}) 
     current_url = current_resource.url 
     if current_url == url_for(url) || current_url == url_for(url) + "/" 
      opts[:class] = "active" 
     end 
     link_to(link, url, opts) 
    end 
end 

Und hier ist, was mein Hauptmenü wie folgt aussieht:

<nav id="mainNav"> 
    <ul> 
     <li id="logo"><% link_to '/index.html' do %><span>ben</span> rajalu<% end %></li> 
     <li id="homeLink"><%= magic_link_to 'home', '/index.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'services', '/services.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'références', '/references.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'a propos', '/a-propos.html' %></li> 
     <li class="divider"></li> 
     <li id="contact"><a href="#" class="offTrigger" data-target="#contactBar">contact</a></li> 
    </ul> 
</nav> 

Was denkt ihr? Was habe ich verpasst?

+0

Ab Dezember 2015, sollten Sie statt 'magic_link_to' 'link_to' verwenden. –

Antwort

10

Das ist ein grundlegendes Problem bei der Bereitstellung von Middleman-Projekten für Github Pages.

Das Problem besteht darin, dass Github Pages Websites in Unterordnern bereitstellen. Wenn Sie also einen absoluten Link haben, z. G. <a href="/services.html">, es wird immer auf einen falschen Ort zeigen.

Sie müssen Middleman in einen relativen Verbindungsmodus umschalten. Fügen Sie diese auf Ihre config.rb:

set :relative_links, true 
+0

Vielen Dank, es war tatsächlich "so einfach" :) – benBecker

+0

Vergiss nicht upvote. : P –

+0

Wird tun, sobald ich genug rep bekommen, um die Funktion zu aktivieren! – benBecker

Verwandte Themen