확인에 작업 할 일이 많이있다. HTML을 파싱하는 방법부터 시작해 보겠습니다. 당신이 조각 또는 단일 태그를 구문 분석하고있는 모든, 당신은 보통의 HTML 태그를 추가하지 노코 기리에게 DocumentFragment가 사용할 수있는 경우 대신
require 'nokogiri'
doc = Nokogiri::HTML('<img class="img-responsive" src="img/logologo.png" alt="">')
doc.to_html # => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><img class=\"img-responsive\" src=\"img/logologo.png\" alt=\"\"></body></html>\n"
을, 당신은 할 수 있습니다 :
doc = Nokogiri::HTML::DocumentFragment.parse('<img class="img-responsive" src="img/logologo.png" alt="">')
doc.to_html # => "<img class=\"img-responsive\" src=\"img/logologo.png\" alt=\"\">"
다음 at
, at_css
또는 at_xpath
을 의미 할 때 css
, xpath
또는 search
을 사용하지 마십시오.
doc.css('img').class # => Nokogiri::XML::NodeSet
doc.at('img').class # => Nokogiri::XML::Element
doc.css('img')[0].to_html # => "<img class=\"img-responsive\" src=\"img/logologo.png\" alt=\"\">"
doc.css('img').first.to_html # => "<img class=\"img-responsive\" src=\"img/logologo.png\" alt=\"\">"
doc.at('img').to_html # => "<img class=\"img-responsive\" src=\"img/logologo.png\" alt=\"\">"
그 css
, xpath
을하고 노드 집합이 중요하다 반환하고 기억 뭔가 search
이 묵상. at
및 그 변형은 반환 된 노드 집합에서 first
또는 [0]
을 사용하는 것과 동일하므로 첫 번째 노드를 반환하므로 at
과 친구들을 사용하면 시끄 럽지 않은 코드가 생성된다는 의미입니다. 여기
내가 그것에 대해 가고 싶어하는 방법은 다음과 같습니다 물론
require 'nokogiri'
doc = Nokogiri::HTML::DocumentFragment.parse('<img class="img-responsive" src="img/logologo.png" alt="">')
img = doc.at('img')
img_src = img.delete('src')
img_params = img.map { |p, v| ":%s => '%s'" % [p, v] }.join(', ')
# => ":class => 'img-responsive', :alt => ''"
img_template = "<%%= image_tag('%s', %s) %%>" % [img_src, img_params]
# => "<%= image_tag('img/logologo.png', :class => 'img-responsive', :alt => '') %>"
, 키 :k => "v"
형식을 사용하여/값은 구식이다. 나는로 변경 권하고 싶습니다 : 결과
img_params = img.map { |p, v| "%s: '%s'" % [p, v] }.join(', ') # => "class: 'img-responsive', alt: ''"
:
"<%= image_tag('img/logologo.png', class: 'img-responsive', alt: '') %>"
왜 하드 코드 속성을 가진'image_tag'에 정적'img' HTML 태그를 번역 하시겠습니까? 달성하려는 것은 무엇입니까? – spickermann
'erb' 페이지를 만들 때, 레일스 애셋 파이프 라인 때문에'
'을 변환해야합니다. 프론트 엔드 파트너는'erb '대신'html'을 쓰는 방법 만 알고 있습니다. –