2012-02-09 4 views
3

버튼이있는 부분보기가있는 웹 페이지가 있으며 일부 정보가 표시됩니다. 사용자가이 부분 뷰에서 버튼을 클릭하면 호출 된 액션 내에서 해당 부분 뷰를 컨트롤러에서 업데이트 할 수 있어야합니다. 특히, 업데이트하려는 문자열이 있습니다.레일 : 페이지의 부분 뷰를 어떻게 다시 렌더링합니까?

<div id="Block_asinSummary" class="block"> 
... 
... 
    <td height="200px" width ="70%"> 
    <%= link_to asinInfo["title"], asinInfo["link"], :target => "_blank" %><br/><br/> 
    <% if !asinInfo["clothingSize"].nil? %> 
     <b><%= _('Size')%>:&nbsp</b> <%= asinInfo["clothingSize"]%><br> 
    <% end %> 
    <font size='1'> 
     <% sku = collectedItemData.displaySku %> 
     <% if sku != collectedItemData.asin%> 
      <b>SKU:</b> <%= sku %><br> 
     <% else %> 
      <b>ASIN:</b> <%= collectedItemData.asin %> 
     <% end %> 

     <%= render(:partial => 'printLabel', :locals => { :creturnWipItemId => creturnWipItemId, :collectedItemData => collectedItemData, :asinInfo => asinInfo, :errorMessage => "HI" })%> 
    </font>   
    </td> 
    </tr> 
</table> 
... 
... 
<% end %> 

: 여기 내 코드는 지금까지이지만, 작동하지 않는 ..

부분보기 (_printLabel.rhtml는) 다음

<% if @printAsinEnabled %> 
      <%= check_box_tag(:needPrint, :needPrint, false, 
      :onchange => "if (this.checked) $('printLabelAction').show(); else $('printLabelAction').hide();") %> 
      <%=_('Need to print label?')%><br /><br /> 
      <div id="printLabelAction" class="action" style="display:none;"> 
       <% onPrintLabelClick = generateAjaxRequest(
        {:controller => @controller.controller_name, 
        :action => 'processPrintLabelRequest', 
        :creturnWipItemId => creturnWipItemId, 
        :barcode => collectedItemData.fnsku, 
        :title => asinInfo["title"]}, 
        ["parameters: Form.serializeElements([$('printerAddress'),$('printerRemote_true'),$('printerRemote_false')])"]) %> 
       <%=_('Printing')%>: <%= collectedItemData.fnsku %> <br /> <br /> 
      <%= radio_button_tag(:printerRemote, :false, !session[:printRemote]) %> 
      <label for="printerRemote_false"><%=_('Local Printer')%></label> <br /> 
      <%= radio_button_tag(:printerRemote, :true, session[:printRemote]) %> 
      <label for="printerRemote_true"><%=_('Remote Printer')%> - <%=_('Printer Address')%>:</label> 
      <%= text_field_tag(:printerAddress, session[:printerAddress], 
       :onchange => onPrintLabelClick, 
       :onclick => "$('printerRemote_true').checked = true")%> <br /> 
      <div style="text-align:right;"> 
       <%= button_to_function(_("Print Label"), onPrintLabelClick) %> 
      </div> 
      <%=_('Error?')%>: <%= errorMessage %> <br /> <br /> 
      </div> 

는 원래 렌더링됩니다 사업부입니다

클릭하면 "errorMessage"를 새 문자열로 업데이트해야하는 컨트롤러 코드는 다음과 같습니다.

render(:partial => 'printLabel', :layout => false, :locals => { :creturnWipItemId => creturnWipItemId, :collectedItemData => @collectedItemData, :asinInfo => asinInfo, :errorMessage => "Bye" }) 

오류가 표시되지 않지만 errorMessage 문자열이 "HI"에서 "Bye"로 업데이트되지 않습니다.

답변

0

컨트롤러에서 render partial을 호출 할 수 없습니다. 대신 템플리트를 렌더링하고 인스턴스 변수를 사용하여 partial에 다른 오류 메시지를 전달하십시오.

관련 문제