[RUBY-ON-RAILS] 같은 페이지에 여러 개의 비 중첩 모델 생성
RUBY-ON-RAILS같은 페이지에 여러 개의 비 중첩 모델 생성
다른 안에 중첩되지 않습니다 같은 페이지에 여러 모델을 만들 수있는 방법이 있습니까?
예를 들어, 당신이 사용자를 생성 할 수있는 형태를하고 싶습니다. 이 같은 줄에 표시 두 가지 간단한 필드, 이름과 성을 가지고 있습니다. 나는 (자바 스크립트를 사용하여)를 만들 것이다 후 다시없이 동일한 라인 "새 사용자 추가"링크를 추가 할 수 있도록 좋아하고 나 같은 페이지 제출에게 두 사용자를 생성 할 수있다.
어떻게 그 사용하여 레일을 달성 할 수 있습니까?
해결법
-
==============================
1.필드를 추가하고 하나의 형태를 유지, 하나의 버튼을 제출
필드를 추가하고 하나의 형태를 유지, 하나의 버튼을 제출
= form_tag(url: create_user_path, remote: true) do %table %tr %td= text_field_tag 'user[][first_name]' %td= text_field_tag 'user[][last_name]' %tr.actions %td= submit_tag 'Save' %td= button_tag 'Add new user form', id: 'add_user_form' %tr.new_user_row.hidden # hidden class matches the css rule: {display:none;} %td= text_field_tag "user[][first_name]" %td= text_field_tag "user[][last_name]" :javascript # jQuery $('#add_user_form').bind('click', function(e) { var row = $('tr.new_user_row').clone().removeClass('hidden new_user_row'); $('tr.actions').before(row); # will append the <tr> before the actions });
UsersController에서 :
def create params[:user].each do |attr| User.create(attr) end end
행 tr.new_user_row.hidden는 새로운 라인 템플릿의 목적을 제공 : 버튼 #add_user_form을 클릭함으로써 JS 코드는 템플릿 행을 선택 복제를과의 마지막으로 볼 수있는 행으로 빈 입력을이 새 행을 추가합니다 탁자.
-
==============================
2.여기의 users_controller.rb
여기의 users_controller.rb
def new end def create_multiple params[:users].each do |user| user = User.create(user) end redirect_to users_url end
여기의 new.html.erb
<%= form_tag '/users/create_multiple' do %> <%= render 'user_fields' %> <div class="actions"> <%= submit_tag %> </div> <% end %>
여기의 _user_fields.html.erb
<script type="text/javascript"> $(function() { var scntDiv = $('#addusers'); var i = $('#addusers div').size() + 1; $('#addfields').on('click', function() { $('<div class="field"><h2>User ' + i +'</h2><input id="users__firstname' + i +'" name="users[][firstname]" placeholder="first name" type="text" /><input id="users__lastname' + i +'" name="users[][lastname]" placeholder="last name" type="text" /></div>').appendTo(scntDiv); i++; return false; }); }); </script> <div id="addusers"> <div class="field"> <h2>User 1</h2> <%= text_field_tag "users[][firstname]", nil, :placeholder => "first name" %> <%= text_field_tag "users[][lastname]", nil, :placeholder => "last name" %> </div> </div> <a href="#" id="addfields">Add a New User</a><br/>
로그에 결과
Started POST "/users/create_multiple" for 127.0.0.1 at 2013-06-05 00:40:07 +0700 Processing by UsersController#create_multiple as HTML Parameters: {"utf8"=>"V", "authenticity_token"=>"xOPM6PB1h6DMUEGS7fX9/eWs/e6dg XKRj231ReviKFo=", "users"=>[{"firstname"=>"test1", "lastname"=>"last1"}, {"first name"=>"test2", "lastname"=>"last2"}], "commit"=>"Save changes"} ←[1m←[36m (78.0ms)←[0m ←[1mbegin transaction←[0m ←[1m←[35mSQL (49.0ms)←[0m INSERT INTO "users" ("created_at", "firstname", "la stname", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Tue, 04 Jun 2013 17: 40:08 UTC +00:00], ["firstname", "test1"], ["lastname", "last1"], ["updated_at", Tue, 04 Jun 2013 17:40:08 UTC +00:00]] ←[1m←[36m (7.0ms)←[0m ←[1mcommit transaction←[0m ←[1m←[35m (0.0ms)←[0m begin transaction ←[1m←[36mSQL (3.0ms)←[0m ←[1mINSERT INTO "users" ("created_at", "firstname", "lastname", "updated_at") VALUES (?, ?, ?, ?)←[0m [["created_at", Tue, 04 Jun 2 013 17:40:08 UTC +00:00], ["firstname", "test2"], ["lastname", "last2"], ["updat ed_at", Tue, 04 Jun 2013 17:40:08 UTC +00:00]] ←[1m←[35m (5.0ms)←[0m commit transaction Redirected to http://localhost:3000/users Completed 302 Found in 156ms (ActiveRecord: 142.0ms)
현재 여러 레코드 기본-구조에 대한 형태 PARAMS를 전달하는 방법은, 당신의 소원에 따라 유효성 검사 코드를 추가 할 수 있습니다
from https://stackoverflow.com/questions/16919711/multiple-non-nested-model-creation-on-same-page by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] OR (대신 AND)와 함께 두 개의 명명 범위를 결합 (0) | 2020.03.04 |
---|---|
[RUBY-ON-RAILS] 분할 오류는 RVM와 맥 OSX에 레일 (0) | 2020.03.04 |
[RUBY-ON-RAILS] 루비 텍스트 파일의 중간에 데이터의 줄을 제거하려면 어떻게 (0) | 2020.03.04 |
[RUBY-ON-RAILS] 왜 Heroku가 Windows에서 내 Gemfile.lock을 허용하지 않습니다? (0) | 2020.03.04 |
[RUBY-ON-RAILS] 레일의 기본 날짜 형식은 (는 DDMMYYYY 할 필요) (0) | 2020.03.04 |