人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

instantrails&ruby初心者です。
簡単なDBを作って表示させていますが、長いテキストを入力すると、listでだらだらと表示されてしまうので一覧性がよくありません。
例えば、最初の数行だけを表示させたい場合はどうしたら良いでしょうか?
表示させた場合もテキストを入力したとおりに改行されず見づらいのですが改行を有効にするにはどうしたら良いのでしょうか?

よろしく、お願い致します。

●質問者: qazz
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:dB InstantRails Ruby テキスト 入力
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● KUROX
●35ポイント

Ruby on Railsは初心者なのではずしてるかもしれませんが、

その場合は、ごめんなさい。

----------------------------------

■改行を有効にする方法

http://www.thinkit.co.jp/cert/article/0605/2/3/2.htm

views(表示)を定義するHTMLがあると思います。

preタグで括れば、くくった部分の改行は有効になります。

http://www.tohoho-web.com/html/pre.htm

----------------------------------------

■最初の数行を表示させる方法

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_10.htm

MYSQLなので、SQL文に、LIMITを用いて必要な行数を取得

します。

http://www.thinkit.co.jp/cert/article/0605/2/3/3.htm

あとは、このあたりの検索機能の作り方をみてくださいとしか

いえません。

◎質問者からの返答

ありがとうございました。

「PRE」で改行を含む表示ができました。

指定行数表示に関しては、いまだ解決できませんでした。


2 ● kent0608
●14ポイント

始めの数行だけを表示したい場合にはpaginateを使用します。

コントローラ内のアクションに、下記のようなインスタンス変数を定義します。

def hoge
 @pages, @texts = paginate(:texts, :order =>"id", :per_page=>10)
end

:texts にはModelクラスの複数形を表すシンボルを入れてください。

(例: User クラスなら :users )

@pages にはページ管理オブジェクトが入ります。

@items には:per_pageオプションで指定された数のデータが入ります。

後はアクションに対応するView( 上の場合 hoge.rhtml )内に下記のコードを埋め込みます。

<% @texts.each do |text| %>
<%= text.body.slice(0,128) %>
<% end %>

<%= pagination_links(@pages) %>

動作確認はしてませんが、多分これで動くと思います。

◎質問者からの返答

ありがとうございました。

sliceで試したところ、文字数の制限ができましたが、

行の指定はできなかったように思いました。

勘違いでしたらすみません。

変わりにeach_lineで、行単位のコントロールができることがわかったので

かなり苦しいですが

<% text.name.each_line do |line| %>

<%= line %>

<% break %>

<%end%>

一行出したところでbreakさせてます。

ただ、一行目が改行だけだと表示がなしになってしまいます。


3 ● kent0608
●31ポイント ベストアンサー

<% i=1 %>

<% tutorial.body.each_line do |line| %>

<% unless /^\s*$/ =~ line %>

<%= i %>行目:<%=h line.split(//u)[0,20] %>

<% i=i+1 %>

<% break if i > 2 %>

<% end %>

<% end %>

こんな感じでどうでしょうか?正規表現で比較して、空白じゃなければその行を出力して、指定の行数に達したらループを抜けさせてます。かなり苦しいですが・・

本当はもっとスマートなやり方があるはずなんですが、思いつきません(;?;

ちなみにSplitだとバイト単位で区切るため、日本語だと文字化けしてしまうのを忘れていました。一度配列に変換して、そこから範囲を選択するとベターです。(文字コードはUTF-8を想定しています)

◎質問者からの返答

大変ありがとうございました。

望む物が表示できました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ