2

text_areaRails 3.1.3 でタグを含むいくつかのフォームをプログラムしようとしています。通常、これらのテキスト領域は複数の段落で埋められます (つまり、改行が含まれます)。テキストを保存して で表示するとsimple_format、段落は正しく表示されますが、同じフォームを編集用に再入力すると、改行ごとにフォーマットがインデントを追加するように見えます。たとえば、フォームのテキスト領域に次のように入力すると:

Item 1
Item 2
Item 3

保存すると、次にフォームを読み込んでデータを編集するときに、text_area に次の情報が入力されます。

Item 1
    Item 2
    Item 3

なぜこれが起こるのか、それを修正する方法を知っている人はいますか? これを表示するフォーム ビューのセグメントは次のとおりです。

    <fieldset>
        <section class="field">
            <%= f.label "Títulos, seminarios, cursos" %>
            <%= f.text_area :titles_seminars_courses %>
        </section>
        ...
    </fieldset>

データベースに保存するときに特別なことは何もしていません(gsubなどはありません)'Item 1\r\nItem 2\r\nItem 3\r\n'。文字列を直接保存するだけです。このデータの最初の作成と編集には同じフォームを使用しています。

この問題についてご協力いただきありがとうございます。

編集1:

データを正しく表示するビューは次のとおりです (ただし、text_area にはありません)。

<section class="titles_seminars_courses">
    <%= simple_format(@academic_background.titles_seminars_courses, :class => "other_study") %>
</section>

編集2:

<textarea cols="40" id="academic_background_titles_seminars_courses" name="academic_background[titles_seminars_courses]" rows="20">Item 1
        Item 2
        Item 3</textarea>
4

2 に答える 2

3

OK、問題は、アプリケーション内のhtml.hamlhtml.erbビューの混合にあるようです。そのため、.erbビューが適切にレンダリングされていないか、他のビューとうまく連携していません.haml。たとえば、mi の場合、アプリケーションのレイアウト ビューは haml ですが、フォームは erb でした。

原因が何であれ、結論としては、text_area_tags は erb では正しくレンダリングされませんが、haml ではレンダリングされます。したがって、私の回避策は、非常にハックできれいではないことはわかっていますが_text_area.html.haml、フォームのテキストエリアだけをレンダリングする小さなパーシャル in haml を作成することでした。

_text_area.html.haml:

-if defined? options
    = f.text_area field, options
-else
    = f.text_area field

したがって、フォームに text_area タグを付けたいときはいつでも、次のように render を呼び出す必要があります。

<%= form_for @instance do |f| %>
    ...
    <%= render :partial => 'common/text_area', :locals => {:f => f, :field => :some_field_from_instance, :options => {:cols => 40, :rows => 10}} %>
    <%= render :partial => 'common/text_area', :locals => {:f => f, :field => :some_other_field} %>
    ...
<% end %>

これは完全にレンダリングされます。そのため、問題はhamlとそのインデントの解釈にあると思います。誰かがより良い解決策を持っている場合は、私に知らせてください。

于 2012-11-06T20:29:26.540 に答える
0

HAML の場合、次を使用する場合:

 ~ f.text_area

それ以外の:

= f.text_area

と同じ効果がHaml::Template.options[:ugly] = trueあり、保存されたテキスト文字列の空白をきれいにしようとするのではなく、保持します。

詳しくはこちらのドキュメントをご覧ください

于 2017-04-20T20:24:02.083 に答える