1

ブートストラップを使用した単純なフォームを使用して、レールでこのフォームを作成しました。

<%= simple_form_for @page, :html => { :class => 'page-form' } do |f| %>
<div class="row">

    <%= f.input :title, wrapper_html: { class: 'span6'}  %>
    <%= f.input :url, wrapper_html: { class: 'span3'}  %>
    <%= f.input :content, input_html: { class: 'wysihtml5 span9' }, wrapper_html: { class: 'span9 row' } %>
    <%= f.input :excerpt, input_html: { class: 'wysihtml5 span9 excerpt' }, wrapper_html: { class: 'span9 row'}  %>

</div>

<% content_for :sidebar do %>
  <div class="page-header">
    <h1>Publish</h1>
  </div>
  <div class="well">
    <%= f.input :status , collection: Page::STATUS.map { |s| [s.humanize, s] }, prompt: '- Select page status -' %>
      <div class="form-actions">
        <%= f.button :submit, :class => 'btn btn-primary' %>
        <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                    pages_path, :class => 'btn' %>
      </div>
  </div>

<% end %>

<% end %>

問題は、送信ボタンがcontent_forブロック内にある場合、クリックしてもフォームが更新されないことです。このブロックの外にボタンがある場合は機能します。

content_forブロックするために内部で機能させる方法はありますか? サイドバーにある必要があります。

望ましい結果の写真:ここに画像の説明を入力

ヒント、回答、または役立つコメントをいただければ幸いです :)

4

1 に答える 1

2

答えは自分で見つけました。

もちろん、フォーム要素をサイドバーのレールに配置することで、フォーム フィールドをフォーム タグの外側にレンダリングしました。(サイドバーの残りの部分がアプリケーション レイアウトを介してレンダリングされるページの下部)。

これにより、フォーム フィールドがフォームに関連付けられなくなります。

私の解決策は、content_forブロックを削除し、この場合の部分的なフォームでサイドバーを処理することでした。

于 2013-04-24T19:54:18.717 に答える