12

「続きを読む」をクリックするオプションを使用して切り捨てたい段落があり、残りのコンテンツとともにスライドして開きます。コンテンツはデータベース フィールドから取得されます。切り捨てのために私が持っているものは次のとおりです。

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

データベースから引き出されたデータでこれを行う方法が見つからないようです。別の div タグで非表示にするテキストと一緒に全文を使用する例がたくさんあります。しかし、このコンテンツはデータベースからのもので動的であるため、その方法に関する情報が見つかりません。

4

2 に答える 2

26

あなたは以下を試すことができます

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

Read moreまたは、リンクを使用したい場合

<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>
于 2013-03-07T03:31:06.927 に答える
5

私はこの会話に少し遅れて参加していることを知っています。私は同じ問題に取り組み、上記の解決策を試してみましたが、うまくいきました。ただし、非表示になっている SEO 用のコンテンツは、検索エンジンによってインデックス化されませんでした。Lynxもチェックインしましたが、リンクをたどることができません (明らかに)。したがって、このソリューションに落ち着きました by Jed Foster | readmore.js - lynx はそれを適切に読み取ることができるので、SE インデックスが更新されるのを待って、検索結果に自分自身が表示されるかどうかを確認しています。誰かが同じような状況にある場合に備えて...

于 2014-10-06T01:01:07.110 に答える