2014-05-02 30 views
5

因此,这是我的第一个中间人项目,我正在努力处理中间人如何管理链接。Middleman路径无法在子目录中工作

事实上,我已经在github页面上设置了它。我的所有资产都在运作,所以我说得对,但由于网站位于子目录中,导致每个网页的路径都失败。

基本上root/directoryname/index.html的作品,但每个链接都会返回一个目录,所以我应该有根/目录名/ page.html我得到root/page.html。

Here, have a link to see it live

这里是我的config.rb样子:

# 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 

而且这里是我的主菜单的样子:

<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> 

你们有什么觉得?我错过了什么?

+0

作为2015年12月的,你应该使用,而不是 'magic_link_to' 的link_to“。 –

回答

10

这是将Middleman项目部署到Github页面时的一个基本问题。

问题是,Github Pages将网站部署到子文件夹,所以当你有一个绝对的链接, G。 <a href="/services.html">,它总会指向一个错误的位置。

您需要将Middleman切换到相对链接模式。添加到您的config.rb

set :relative_links, true 
+0

非常感谢,这确实是“那么简单”:) – benBecker

+0

不要忘记upvote。 :P –

+0

只要我获得足够的代表启用该功能,就会尽快完成! – benBecker