質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

92.04%

  • Ruby

    3465questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    3122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 4

    1725questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • RubyGems

    184questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

nested_form_fieldsというgemについて

受付中

回答 0

投稿 2016/10/28 21:43 ・編集 2016/10/28 23:04

  • 評価
  • クリップ 1
  • VIEW 260

NishidaRyu416_

score 51

このgemは動的にformを追加できるようにすることを目的としたもの

・本来ならhas_many,belongs_toの関係で使う

解説ページ

gem公式ページ

<%= form_for(@hotel, html:{class: 'form-horizontal'}) do |f| %>
...
  <table class="table table-striped table-bordered table-hover">
          <tbody>
            <tr>
               <th>お部屋タイプ名</th>
               <th>定員人数</th>
               <th>メモ</th>
               <th>Action</th>
            </tr>
            <%= f.nested_fields_for :roomtypes, wrapper_tag: :tr do |q| %>
                <td><%= q.text_field   :name,     class: 'form-control' %></td>
                <td><%= q.number_field :capacity, class: 'form-control' %></td>
                <td><%= q.text_field   :note,     class: 'form-control' %></td>
                <td><%= q.remove_nested_fields_link 'Delete', class: 'btn btn-danger', role: 'button' %></td>
            <% end %>
        </tbody>
      </table>
      <%= f.add_nested_fields_link :roomtypes, 'Add new', class: 'btn btn-primary', role: 'button' %>
...
<% end %>

しかし、has_many,belongs_to関係でないケースで使いたい。
具体的には、以下のコードのように問題、回答とのセットを@wordを保存する際に、一度に多くの問題、回答とのセットを保存するためのフォームを動的に増やしたい。

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@word) do |f| %>
        <%= render 'shared/error_messages', object: f.object %>
        <%= f.label :image,"ホーム画像" %>
        <%= f.file_field :image,class: 'form_control'%>

        <%= f.label :japanese,"問題"%>
        <%= f.text_area :japanese, class: 'form-control' %>

        <%= f.label :english, "回答" %>
        <%= f.text_area :english, class: 'form-control' %>

        <%= f.remove_nested_fields_link 'Delete', class: 'btn btn-danger' %>
        <br>
        <hr>
        <%= f.nested_fields_for :words do |q| %>

            <%= q.label :image,"ホーム画像" %>
            <%= q.file_field :image,class: 'form_control'%>

            <%= q.label :japanese,"問題"%>
            <%= q.text_area :japanese, class: 'form-control' %>

            <%= q.label :english, "回答" %>
            <%= q.text_area :english, class: 'form-control' %>

            <%= q.remove_nested_fields_link 'Delete', class: 'btn btn-danger' %>

        <% end %>
        <br>
        <%= f.add_nested_fields_link :words, 'Add new', class: 'btn btn-success'%>
        <hr>
        <%= f.submit ' my words', class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

回答よろしくお願いしましす。

  • 気になる質問をクリップする

    クリップした質問に回答があった場合に通知・メールを受け取ることができます。

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • hana-da

    2016/10/30 07:21

    modelのコードがあった方がいいと思います

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

92.04%

関連した質問

同じタグがついた質問を見る

  • Ruby

    3465questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    3122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 4

    1725questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • RubyGems

    184questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

閲覧数の多いRubyの質問