2011-02-11 4 views
0

그래서 나는 잘 작동하는 것처럼 보이는 다른 이미지를 위해 내 헤더 이미지를 바꾸기 위해 사용하고있는 도우미가 있습니다. 이게 내 도우미 야.레일 3 : 플래시 애니메이션을위한 레이아웃 이미지 바꾸기

def header_image_tag 
    @header_image ||= 'headers/image.png' 
    image_tag @header_image 
end 

def header_image(image_path) 
    @header_image = image_path 
end 

내보기에는 내가 사용합니다.

<% header_image('headers/newimage.png') %> 

지금 여기에 까다로운 부분입니다, 내가하고 싶은 것, 대신 내가 플래시 배너 교환하고 싶습니다 사진으로 대체이다.

코드 대신 sanitize (객체 태그를 사용하지 않고 작동하는)를 사용하여 코드를 바꾸려고했습니다. 다음은 내 이에 대한 도우미 ...

def text_banner_tag 
    @text_banner ||= 'textBanner.png' 
    if @text_banner != "textBanner.png" 
    else 
    image_tag @text_banner 
    end 
end 

def text_banner(object_code) 
    @text_banner = object_code 
end 

내보기에 코드 ... 모든 도움을 주시면 감사하겠습니다 모든 및

<% text_banner(sanitize('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="970" height="48" id="FlashID" title="textbanner" alt="text banner"> 
     <param name="movie" value="/flash/textbanner.swf"> 
     <param name="quality" value="high"> 
     <param name="wmode" value="transparent"> 
     <param name="swfversion" value="6.0.65.0"> 
     <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. --> 
     <!--[if !IE]>--> 
     <object type="application/x-shockwave-flash" data="/flash/textbanner.swf" width="970" height="48"> 
     <!--<![endif]--> 
     <param name="quality" value="high"> 
     <param name="wmode" value="transparent"> 
     <param name="swfversion" value="6.0.65.0"> 
     <param name="expressinstall" value="/Scripts/expressInstall.swf"> 
     <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. --> 
     <div> 
      <%= image_tag("textBanner.png", :size => "970x48", :alt => "text banner", :border => "0") %> 
     </div> 
     <!--[if !IE]>--> 
     </object> 
     <!--<![endif]--> 
    </object>')) %> 

처음이다!

+0

전체 ''부분을 부분 ("_swf.html.erb"이라고도 부를 수 있음)로 이동시키고 단 하나의 swf에서만 작동하도록하는 것이 좋습니다. 그런 다음 모든 것이 작동하고 swf가 제대로 재생되면 필요에 따라 매개 변수를 추가합니다. 마지막으로 swf 객체가 필요할 때마다'render : partial => 'swf'를 사용하여 매개 변수화하십시오. – weltraumpirat

답변

0

미래에이 문제가 발생할 수 있으며이를 자체 사이트에서 구현하려는 사람들을 위해 일부 파기를 할 때 이것이 내가 발견하고 잘 작동 한 것입니다.

기본적으로 태그 세트와 일련의 속성을 위생 용으로 광고해야합니다. 위생 용으로 기본 html 만 사용하면 플래시에 필요한 요소가 누락됩니다. 사용 배너를 호출

def text_banner_tag 
    @text_banner ||= '<img src="/images/textBanner.png">' 
     tags = %w(a acronym b strong i img em li ul ol h1 h2 h3 h4 h5 h6 object param div blockquote br cite sub sup ins p) 
     sanitize(@text_banner, :tags => tags, :attributes => %w(href classid title width height id alt data name value src)) 
    end 

    def text_banner(object_code) 
    @text_banner = object_code 
    end 

레이아웃에서 : 여기

내가 도우미에서 무슨 짓을했는지
<%= text_banner_tag %> 

그리고 당신이 플래시 배너를 표시 할 뷰

이것을 뷰 상단에 추가하십시오 :

<% text_banner('<object> <param> <div>text for no flash</div> </object>') %> 

플래시 오브젝트에 필요한 것을 모두 채우십시오.

또한 보안 다만주의 경고 다른 엑스트라

많이 구현하기 위해 이것을 사용할 수 있습니다 경우 나눠 코드를 허용 형태로 작성되어 사용자에게 출력이 사용.