javascript - Rails 使用 'read more' 切换 chop

标签 javascript jquery ruby-on-rails ruby-on-rails-3 truncate

我有一个段落,我想通过单击“阅读更多”选项 chop 它,然后让它与其余内容一起滑动打开。内容来自数据库字段。这是我 chop 的内容:

<%= truncate(@major.glance, :length => 250, :omission => '... Read More')%>

我似乎无法找到一种方法来处理从数据库中提取的数据。我看到很多使用全文的例子,你想在一个单独的 div 标签中隐藏文本。但是,由于此内容来自数据库并且是动态的,所以我找不到有关如何执行此操作的任何信息。

最佳答案

你可以试试下面的方法

<div>
  <% if @major.glance.length > 250 %>
    <%= link_to_function truncate(@major.glance, length: 250), "$(this).parent().html('#{escape_javascript @major.glance}')" %>
  <% else %>
    <%= @major.glance %>
  <% end %>
</div>

或者如果您更喜欢使用阅读更多链接

<div>
  <% if @major.glance.length > 250 %>
    <%= truncate(@major.glance, length: 250) %>
    <%= link_to_function '...Read more', "$(this).parent().html('#{escape_javascript @major.glance}')" %>
  <% else %>
    <%= @major.glance %>
  <% end %>
<div>

更新

由于在 Rails 4 中,link_to_function 已被弃用,建议使用非干扰性 js,使用以下

<div>
  <% if @major.glance.length > 250 %>
    <%= truncate(@major.glance, length: 250) %>
    <%= link_to '...Read more', '', class: "read-more-#{@major.id}" %>
    <script>
      $('.read-more-<%= @major.id %>').on('click', function(e) {
        e.preventDefault()
        $(this).parent().html('<%= escape_javascript @major.glance %>')
      })
    </script>
  <% else %>
    <%= @major.glance %>
  <% end %>
<div>

关于javascript - Rails 使用 'read more' 切换 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262503/

相关文章:

javascript - 从 jquery 中的另一个 javascript 调用函数

ruby-on-rails - 创建文件夹有什么作用,是自动命名空间吗?

ruby-on-rails - ActiveRecord/PostgreSQL 中具有指定重复周期 + 终止日期的重复记录

javascript - focus() 无法进行第二次调用

javascript - 将全 Angular slider 缩放到浏览器底部

javascript - Chrome扩展程序在内容和后台之间传递消息

javascript - 使用 jQuery 和 Ajax 发送输入数组

jquery - 针对包含 AjaxStart/Stop 的特定 ajax 调用

javascript - 热重载在我的 React 应用程序中不起作用

ruby-on-rails - 如何将模型字段作为字符串输入(未定义方法 `b' 为 :title:Symbol)