Rails 3字符串包含HTML代码,需要循环遍历字符串中的代码



我正在rails 3应用程序上工作,我需要将html代码传递给字符串变量,并将其作为参数传递给web服务。

我有下面的代码,里面有循环,但因为它是在字符串中声明的,所以它不能处理<%%>和#{}标签

      @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>"

请帮帮我。

另存为html.erb

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

要将字符串与HTML组合,您需要使用Erb或Haml之类的模板系统。如果您不打算立即将模板呈现回浏览器,您仍然可以通过直接调用Erb来使用Erb,让它解析HTML字符串和变量并将结果作为字符串返回。

一旦你走上这条路,要格外小心用户提供的内容,避免任何不可信的东西。当您在rails中正常呈现erb模板时,rails为您做了相当多的工作来避免这类问题,但是一旦您做了类似示例所示的事情,或者如果您直接使用erb来解析它,您将不再受益于rails的安全检查,因此需要放入您自己的检查。

相关内容

最新更新