2012-02-09 6 views
3

У меня есть веб-страница с частичным видом, которая имеет кнопку и отображает некоторую информацию. Когда пользователь нажимает кнопку в этом частичном представлении, мне нужно иметь возможность обновлять это частичное представление от контроллера в вызываемом действии. В частности, есть строка, которую я хочу обновить. Вот мой код до сих пор, но он не работает ..Rails: Как перерисовать частичный вид на странице?

частичный вид (_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> 

Вот DIV, где визуализируется первоначально:

<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 %> 

И вот код контроллера, который должен обновлять «errorMessage» новой строкой при нажатии:

Я не вижу никаких ошибок из этого, но строка errorMessage не обновляется с «HI» до «Bye».

ответ

0

Вы не можете вызвать частичное удаление части с вашего контроллера. Вместо этого отрисуйте шаблон и передайте другое сообщение об ошибке частичному, используя переменную экземпляра.

Смежные вопросы