2013-01-22 81 views
0

我想知道的語法是鏈接到一個屬性在同一頁上什麼的link_to當前頁面軌

我有日期

<ul> 
    <% @response.each_pair do |date, movie| %> 
     <li><%= link_to date_format(date), date, :class => 'scroll_to' %></li> 
    <% end %> 
    </ul> 

的列表,這些再有電影像這樣

每個日期的下方
<% @response.each_pair do |date, movie| %> 
    <h3 class="resultTitle fontSize13">Available on&nbsp;<%= date_format(date) %></h3> 
    <% movie.each do |m| %> 
     <div class="thumbnail clearfix"> 
     <img class="pull-left" src=<% if m.image_link %> <%= m.image_link %> <% else %> "/assets/noimage.jpg" <% end %>> 
     <div class="caption pull-right"> 
      <%= link_to m.name, m.title_id, :class => 'resultTitle fontSize11' %> 
      <p class="bio"><%= m.bio %></p> 
      <p class="resultTitle">Cast</p> 
      <p class="bio"><%= m.cast.join(", ") unless m.cast.empty? %></p> 
      <%= link_to "Remind me", reminders_path(:title_id => m.title_id), :method => :post, :class => 'links button' %> 
     </div> 
     </div> 
    <% end %> 
    <% end %> 

我想什麼來實現的是,當用戶點擊列表中的一個日期,然後它會帶他們到該日的電影在同一頁上

我對於每一日期,屬性是

"release_date" 

我是否需要鏈接到的是,也許一塊的jQuery藏漢向下滾動到該日期?或者它會一步跳到日期?

任何意見讚賞,我已經鏈接到其他網頁之前,但不喜歡這個

編輯同一個頁面

我都試過,但頁面只是重新呈現

<li><%= link_to date_format(date), params.merge(:release_date => 'release_date'), :class => 'scroll_to' %></li> 

我是在正確的軌道上?

感謝

回答

1

所有你需要的是給你的約會對象唯一標識符和鏈接到你列出。例如下面我們給每個日期的h3一個id相對於日期對象。瀏覽器知道如何處理內部鏈接,並簡單地跳轉到相應的標識符。請注意,當您點擊鏈接時,您鏈接的字段的ID是如何附加到網址的末尾的。

<ul> 
    <%- index = 0 %> 
    <% @response.each_pair do |date, movie| %> 
    <%- index += 1 %> 
    <li><%= link_to date_format(date), "##{index}", :class => 'scroll_to' %></li> 
    <% end %> 
</ul> 
<%- index = 0 %> 
<% @response.each_pair do |date, movie| %> 
    <%- index += 1 %> 
    <h3 class="resultTitle fontSize13" id="<%= index %>">Available on&nbsp;<%= date_format(date) %></h3> 
    <% movie.each do |m| %> 
     <div class="thumbnail clearfix"> 
     <img class="pull-left" src=<% if m.image_link %> <%= m.image_link %> <% else %> "/assets/noimage.jpg" <% end %>> 
     <div class="caption pull-right"> 
      <%= link_to m.name, m.title_id, :class => 'resultTitle fontSize11' %> 
      <p class="bio"><%= m.bio %></p> 
      <p class="resultTitle">Cast</p> 
      <p class="bio"><%= m.cast.join(", ") unless m.cast.empty? %></p> 
      <%= link_to "Remind me", reminders_path(:title_id => m.title_id), :method => :post, :class => 'links button' %> 
     </div> 
     </div> 
    <% end %> 
<% end %> 

對於添加JQuery的過渡可以更換

<li><%= link_to date_format(date), "##{index}", :class => 'scroll_to' %></li> 

<li><%= link_to_function date_format(date), "$('html, body').animate({scrollTop:$('##{index}').offset().top }, 'slow');", :class => 'scroll_to'%></li> 

以上是不完全是乾的做法,而是抽象的最重要的事情出來的是您將鏈接到頁面上其他位置的唯一ID,而不是代碼本身。

+0

謝謝你的回答,我已經嘗試了,因爲你已經說過,但得到未定義的方法'id'爲「2013-01-09」:字符串 – Richlewis

+0

確定我認爲我已修復,現在當我停留在鏈接日期是但是當我點擊 – Richlewis

+0

時沒有任何反應抱歉,我認爲這是一個對象,如果日期總是獨一無二的,您可以用'## {date}'替換'## {date.id}'。否則,你將不得不使用某種索引,查看我更新的答案。 – Noz