2013-03-07 7 views
10

「もっと読む」をクリックして他のコンテンツと一緒にスライドさせるというオプションで切り捨てたい段落があります。コンテンツはデータベースフィールドから取得されています。ここで私は切り捨てのために持っているものだ:「もっと読む」トグルで切り捨てられるレール

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

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

+0

これは私のために働いた簡単な答えでした。 http://stackoverflow.com/a/26854494/5551783 – dgreen22

答えて

22

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

を試すことができたり、Railsの4であるので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> 

UPDATE

を使用することを好む場合、link_to_functionは廃止され、それがあります妨害のないjを使用することをお勧めします。以下を使用してください。

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

'omission'オプションをリンクとして使用できないのは、truncateメソッドがこれを文字数に含めるためです。それを使用することはできますが、切り捨てたい文字数の計算にはロジックを追加する必要があります。 – jvnill

+0

js部分を変更して、親の内容を再度変更することができます。または2つのdivを追加します.1つは切り捨て部分、もう1つは切り捨てなし、次にdivを切り換えます。 – jvnill

+0

この部分を$(this).parent().html( '#{escape_javascript @ major.glance}') '' 'MooToolsと同等に変更するだけです。 – jvnill

5

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

+0

readmore.jsについて私に知らせてくれてありがとう、これはまさに私がやろうとしているタイプのものです。これは素晴らしく見えます。共有ありがとう! – lflores

関連する問題