중간 연상 의 불량 행위
4972 단어 nested_form
묘사
나는 깊이 끼워 넣는 형식의 오류를 만났다.간단히 말해 중간 연결(book in library -->book-->story)이 양식에 중첩된 속성 이외에 아무런 속성이 없을 때 중첩된 양식은 잘못된 ID(모든 것이 동일)를 생성하여params hash에서 컨트롤러에서 유일한 이야기를 얻을 수 있다.
나는 세 가지 모델이 있다.
class Library < ActiveRecord::Base
has_many :books
accepts_nested_attributes_for :books
end
class Book < ActiveRecord::Base
belongs_to :library
has_many :stories
accepts_nested_attributes_for :stories
end
class Story < ActiveRecord::Base
belongs_to :book
end
도서관 관리자:class LibrariesController < ApplicationController
def new
@library = Library.new
@library.books.build
end
def create
render text: params.inspect
end
end
내 도서관 표는 다음과 같다.<%= nested_form_for(@library) do |f| %>
<div class="field">
<%= f.label :name_of_library %><br>
<%= f.text_field :name_of_library %>
<%= f.fields_for :books do |book_f| %>
<%= book_f.label :title %>
<%= book_f.text_field :title %>
<%= book_f.fields_for :stories do |story_f| %>
<%= story_f.label :subtitle %>
<%= story_f.text_field :subtitle %>
<%= story_f.link_to_remove 'Remove story' %>
<% end %>
<%= book_f.link_to_add 'Add story', :stories %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
라이브러리를 만들 때, 나는 자동으로 여러 개의 이야기가 담긴 책으로 그것을 채운다. (이상하게 보이지만, 최초의 작업에는 폴더와 사진집이 있고, 그 안에 이와 관련된 사진이 포함되어 있어 더욱 의미가 있다.)나는 책 한 권에 두 개의 이야기를 첨가했다.모든 것이 정상입니다. 요청을 보낸 후 매개 변수가 산열됩니다. (여기에서 불필요한 필드를 삭제했습니다.)
{"library"=>{"name_of_library"=>"Babylon library", "books_attributes"=>{"0"=>{"title"=>"Book of books", "stories_attributes"=>{"1368882624930"=>{"subtitle"=>"True story", "_destroy"=>"false"}, "1368882631410"=>{"subtitle"=>"False story", "_destroy"=>"false"}}}}}}
그리고 나는 표에서 도서 이름의 입력(portfolio의 사진 소장품은 이름이 없을 수 있음)을 삭제하고 다른 필드를 똑같은 방식으로 채우고 유일한 이야기를 얻었다. 왜냐하면 현재 표에 있는 모든 입력은 같은 id를 가지고 있기 때문이다. 뒤에 있는 이야기는 옛일을 다시 쓰기 때문이다.매개변수 해시는 다음과 같습니다.{"library"=>{"name_of_library"=>"Babylon library", "books_attributes"=>{"0"=>{"stories_attributes"=>{"1368882731158"=>{"subtitle"=>"False story", "_destroy"=>"false"}}}}}}
너는https://github.com/prijutme4ty/nested_form_deep_association_bug그리고 실행/libraries/new
(이 프로그램은 rails 4.0.rc1이지만 rails 3의 플러그인 폼이 완전히 같은 문제에 부딪혔음)을 시도하고 책 제목이form이나Not인 상황에서 시도한다.기호=
를 삭제하면 필드가 렌더링되지 않습니다.<%= book_f.label :title %>
<%= book_f.text_field :title %>
나는 표의 입력에 도대체 무슨 문제가 생겼는지 모르겠지만, 그것들은 분명히 뜻밖이다.또한 만약에 내가 표를 보여주기 전에 중간 서적 관련을 저장한다면 이 오류는 저장되지 않은 관련에만 존재한다. 모든 작품
#new
작업에서 대상을 만드는 것은 매우 잘못된 방식이다.토론 #1
보아하니 이것은closestChild
javascript 코드의 문제인 것 같다.내가 사용하는 임시 해결 방안은 숨겨진 keep
입력 필드 (.gitcept 파일과 유사) 를 폼에 추가하는 것입니다.중간 블록에 주어진 입력 필드가 없을 때 closestChild
중간 블록의 상하문은 입력한 name
속성을 사용하기 때문에 파생할 수 없습니다.그래서 closestChild
내부 관련 입력을 눌렀다.토론 #2
도 같은 문제가 있다.#266토론 #셋
@kirel 네, 절대 똑같아요!당신의 해결 방안이 합병되기를 바랍니다.수동으로 테스트해 봤어요?네, 우리는 이미 생산하고 있습니다.우리 프로그램에 정상적으로 작동할 수 있도록 요청 규범을 추가했습니다.gem에 있는 기존 테스트의 문제는 정규 표현식이 정확한 구조만 테스트하고 잘못된 ID를 무시했기 때문이다. (모든 ID와 같다.)그러나 타임 스탬프이기 때문에 정확한 ID를 얻을 수 없습니다.우리의 규범에서 내가 해야 할 일은 정확한 폼 필드(capybara webkit 사용)를 작성하는 것이다.page.execute_script <<-JAVASCRIPT # make sure simple IDs are generated for new form fields
var i = 0; NestedFormEvents.prototype.newId = function () { return ++i; };
JAVASCRIPT
토론 #4
266호는 지금 본점에 있습니다.감사합니다!토론 #5
저는 끼워넣기 형식(0.3.2)과 단순 형식(2.1.0)에 같은 문제가 있습니다.
코드 예:
=simple_nested_form_for[:user,@shop],url:“/user/update_shop_front_end”,id:@shop.id, 방법: "post",:html=>{:class=>'user info form horizontal'}do | f|
=f. 입력:이름
=f. 입력:logo
= 이미지 태그 f. 객체표지사이트 주소
.clearfix
% 인적 자원
%br
.title="배너 관리"
%br
상점 배너
=f. 필드 | 예: 스토어 | 배너 | b|
=b. 입력:이미지
=b. 링크 제거 "이 배너 제거"
%br
= f.link to add "add a banner": shop banner, 데이터: {target:#shop banner"} 토론 #6
gem에서 이 리콜 업데이트를 사용하지 않았습니다.gem 및 github 소스 코드를 추가하여 동일한 문제를 해결했습니다.gem 'nested_form', github: 'ryanb/nested_form'
Reference
이 문제에 관하여(중간 연상 의 불량 행위), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://github.com/ryanb/nested_form/issues/267
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
=f. 필드 | 예: 스토어 | 배너 | b|
=b. 입력:이미지
=b. 링크 제거 "이 배너 제거"
%br
= f.link to add "add a banner": shop banner, 데이터: {target:#shop banner"}
토론 #6
gem에서 이 리콜 업데이트를 사용하지 않았습니다.gem 및 github 소스 코드를 추가하여 동일한 문제를 해결했습니다.gem 'nested_form', github: 'ryanb/nested_form'
Reference
이 문제에 관하여(중간 연상 의 불량 행위), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/nested_form/issues/267텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)