

現在、Rails4でユーザー投稿型のアプリケーションを開発しており、Naverまとめのようなコンテンツのブロックを組み合わせて記事を作っていく機能を作成したいと思っております。

そこでテーブル構成は下記のようになっております。

**Postテーブル**

[code]

    has_many :items
    #カラム↓
    : name
    : description
    
[/code]

**itemテーブル**

[code]

    has_one :heading,content,movie,quate
    #カラム↓
    : order #こちらはitemの順番を保持するカラムです
    : post_id
    
[/code]

**heading, content, movie, quateテーブル**

[code]

    belongs_to :item
    #カラムは各テーブル毎に違ったものを保持しています。
    
[/code]

そして下記のようにコントローラーで指定し、

**PostsController**

[code]

    def new
        @post = current_user.posts.build
        @item = @post.items.build
        @item.build_heading
        @item.build_content
        @item.build_movie
        @item.build_quate
    end
    
[/code]

ビューで下記のように階層関係のフォームを表示しております。

**form.html.erb**

[code]

    <%= form_for(@post) do |f| %>
        <% if @post.errors.any? %>
          <ul>
            <% @post.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
            <% end %>
          </ul>
        <% end %>
    
    <%= f.label :タイトル %>
    <%= f.text_field :title, placeholder: "ポストのタイトルを入力" %>
    
    <%= f.label :概要 %>
    <%= f.text_field :description, placeholder: "ポストの概要を入力"%>
    
    <%= f.label :画像のアップロード %>
    <%= f.file_field :image %>
    
    <%= f.hidden_field :user_id %>
    
    <ul id="wighet">
                <li><div><br><a class="widgetselecterbtn">見出し</a></div></li>
                <li><div><br><a  class="widgetselecterbtn">テキスト</a></div></li>
                <li><div><br><a class="widgetselecterbtn">Youtube</a></div></li>
                <li><div><br><a class="widgetselecterbtn">引用</a></div></li>
            <ul>
    
      <div id="entry_list">
      </div>
    
      <%= f.fields_for @item do |m| %>
                <%= m.hidden_field :order, value: '0' %>
    
                <div class="ItemWidget01 itemselected hide">
                      <%= render 'headings/form_fields', m: m %>
                </div>
                <div class="ItemWidget01 itemselected hide">
                      <%= render 'contents/form_fields', m: m %>
                </div>
                <div class="ItemWidget01 itemselected hide">
                      <%= render 'movies/form_fields', m: m %>
                </div>
                <div class="ItemWidget01 itemselected hide">
                      <%= render 'quates/form_fields', m: m %>
                </div>
    
        <%= m.submit %>
      <% end %>
    <%= f.submit %>
    <% end %>
    
[/code]

今回この <%= m.submit %>
がクリックされた段階で、一旦保持されたデータをビューに表示し、確認しながらほかのitemも追加していけるようにしたいと思います。

様々な方法等を調べたのですが、よくわからず、困っています。

どなたかお力添えいただけませんでしょうか？


CC BY-SA 3.0
2016-01-28T09:49:57.040
21442
2016-11-28T09:58:11.357
2016-02-01T00:44:52.043
5793
14129
question
ruby-on-rails ruby
子階層フォームの要素だけを子階層のsubmit時に送信し、それを同ビューにて表示したい


submitをhtmlのsubmitタグで書かずに送信機能が無いただのボタンをhtmlで実装し、JavaScriptでただのボタンがクリックされた時にviewのどこかに確認画面を表示出来るレイアウトに変更し、JavaScript側でinputタグに入力されたデータを取得し表示するとよいと思います。  
最初は実際には送信せず、itemを追加し終わった段階でJavaScriptで隠していたsubmitボタンを表示するとよいでしょう。


CC BY-SA 3.0
2016-02-03T12:04:39.117
21671
2016-02-03T12:04:39.117
7373
21442
answer