2013-04-26 41 views
0

我正在rails 3應用程序中,我需要將html代碼傳遞到字符串變量並將它作爲參數傳遞給Web服務。Rails 3字符串包含HTML代碼需要遍歷字符串中的代碼

我有內環路下面的代碼,但因爲它是在聲明的字符串時,它不與< %%>和#{}標籤工作

 @emaildata = "<H3>FLOOR VIEW ACTION REQUEST</H3> 
     <table border='0' cellspacing='4'> 
     <tr> 
      <td>Submitted On:</td> 
      <td align='left'><strong>#{Date.today}</strong></td> 
     </tr> 
     <tr> 
      <td> Originator: </td> 
      <td align='left'><strong>#{session[:user_name]}</strong></td> 
     </tr> 
     </table> 
    <table border=0 width=100%> 
        <tr bgcolor='##006699'> 
        <td align='center'><font color='##FFFFFF'><strong>ACTION CODE</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>PART<BR />NUMBER</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>LOCATION</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>BIN QTY</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>PACK QTY</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>UM</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>SCAN CODE</strong></font></td> 
        <td align='center'><font color='##FFFFFF'><strong>REASON/COMMENTS</strong></font></td> 
        </tr> 


       <% (1..PartNoListInEmail.length).each_index do |i|%> 
        <tr bgcolor='##E0E5E5'> 
        <td align='center'>#{@ActionCodeListInEmail[i]}</td> 
        <td align='center'>#{@PartNoListInEmail[i]}</td> 
        <td align='center'>#{@SendToListInEmail[i]}</td> 
        <td align='center'>#{@OrderQtyListInEmail[i]}</td> 
        <td align='center'>#{@PackQtyListInEmail[i]}</td> 
        <td align='center'>#{@UMListInEmail[i]}</td> 
        <td align='center'>#{@ScancodeListInEmail[i]}</td> 
        <td align='center'>#{@reasonForActionIn[i]}</td> 
        </tr> 
       <%end%> 
    </table>" 

請幫助我。

回答

2

保存HTML作爲部分爲html.erb

@emaildata = "<%= escape_javascript(render :partial=>'some_partial_name', :locals => {:PartNoListInEmail => @PartNoListInEmail}).html_safe %>" 
0

對於字符串與HTML相結合,要使用模板系統,如厄爾布或Haml的。如果您不打算立即將模板呈現回瀏覽器,您仍然可以通過直接調用Erb來使用Erb來執行此操作,讓它解析HTML字符串和變量並將結果作爲字符串返回。

一旦你走下這條路,就要特別小心用戶提供的內容,並逃避任何不可信的事情。當你在rails中正常渲染erb模板時,rails會爲你避免這些問題做相當多的工作,但是一旦你做了類似於你的例子所展示的東西,或者如果你直接使用Erb來解析它,你將不再受益來自Rails的安全檢查,因此需要進行自己的檢查。