2012-06-19 1 views
1

한 리튬으로 그룹화하지 않습니다.semantic_fields_for 모두 내가</p> <p>여기에 현재의 조각입니다 HAML와 f.semantic_fields_for 사용하고

 %ul.documents 
     =f.semantic_fields_for :documents do |u| 
      = link_to(u.object.comment.presence || u.object.file.original_filename, u.object.file.url)                      
      = u.input :comment, :as=>:string 
      = u.hidden_field :_destroy 
      = link_to_function image_tag("/img/del_documets.png"), "remove_fields(this)", :class => "btn" 

여기에 문제는 단지 "u.input : 코멘트 : 문자열 =>과 같이"formtastic에 의해 생성 된 "리"안에 있습니다. 링크와 다른 필드가 어딘가에 있으며이 종류의 HTML을 올바르게 스타일링하는 것은 불가능합니다.

모든 것이 정확한 리로 들어가는 것을 확인하는 방법이 있습니까?

f.semantic_fields_for 직후에 li을 추가하더라도 첫 번째 링크 만 감싸기 때문에 다음 요소는 완전히 위의 ul 만 감싸줍니다.

답변

1

<ol> 안에 들어 가지 않도록 formtastic에서 항상 입력을 <li>으로 감싸는 것처럼 보입니다. 이는 유효하지 않습니다.

가장 좋은 방법은 모든 요소 주위에 <li>을 입력하고 원하는 경우 입력에 wrapper_html => { :class => :your_class }을 추가하는 것입니다. 그런 식으로 스타일을 꾸밀 수 있습니다.

입력 주위에 ul.documents이 필요하지 않습니다. semantic_fields_for은 이미 <ol>을 사용하여 모든 것을 래핑합니다.

HTML을 직접 생성하는 라이브러리를 사용하지 않는 것이 HTML을 생성하도록 만드는 대신 HTML 및 CSS를 적용하는 것이 좋습니다.

나는 그렇게 (그리고 그것에서 내 자신의 CSS 스타일을) 것 :이 도움이

=f.semantic_fields_for :documents do |u| 
     %ul.documents 
     %li= link_to(u.object.comment.presence || u.object.file.original_filename, u.object.file.url)                      
     = u.input :comment, :as=>:string 
     %li= u.hidden_field :_destroy 
     %li= link_to_function image_tag("/img/del_documets.png"), "remove_fields(this)", :class => "btn" 

희망을. 그것은이 같은 inputs 래퍼를 생성 할 때

+0

그 문제는 모든 요소가 한 줄에 있어야한다는 것입니다. 이것은 나에게 4 개의 LI를 제공합니다. 그러나 UL에서 LI로 랩핑 할 수는 있지만 그래도 꽤 못생긴 것입니다. –

+0

또한 hidden_field는 좋은 결과를 얻는 방법 인 –

1

또한 Formtastic의 기본 동작을 무시할 수 :

module Formtastic 
    module Inputs 
    module Base 
     module Wrapping 
     def input_wrapping(&block) 
      template.content_tag(:li, 
      [template.capture(&block), error_html, hint_html].join("\n").html_safe, 
      wrapper_html_options 
     ) 
     end 
     end 
    end 
    end 
end 

을 주목 content_tag(:li. 예를 들어 content_tag(:div으로 바꿀 수 있습니다.

레일스에서 ​​모듈 방법을 오버라이드하는 법을 알고 있습니까?

+0

으로 감싸지지 않았지만, 기본 동작을 변경하지 않으려면 입력에 매개 변수를 전달하십시오. 나는 모든 것을 바꿀 시간이 없기 때문에 어쨌든 나는 upvote –

+0

투표 해 주셔서 감사합니다! –