link_to当前页面rails

时间:2013-01-22 21:04:54

标签: ruby-on-rails-3 hyperlink 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 个答案:

答案 0 :(得分: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>

以上并不完全是DRY方法,但从中抽象出来的重要一点是,您要链接到页面上其他位置的唯一ID而不是代码本身。