ruby-on-rails - rails : How do I re-render a partial view on a page?

标签 ruby-on-rails ruby-on-rails-3

我有一个带有按钮并显示一些信息的局部 View 的网页。当用户单击此局部 View 中的按钮时,我需要能够在被调用的操作中从 Controller 更新该局部 View 。具体来说,有一个字符串我想更新。到目前为止,这是我的代码,但它不起作用..

部分 View (_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”的 Controller 代码:

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

我没有看到任何错误,但是 errorMessage 字符串没有从“HI”更新为“Bye”。

最佳答案

您不能从您的 Controller 调用 render partial。相反,呈现模板并使用实例变量将不同的错误消息传递给部分。

关于ruby-on-rails - rails : How do I re-render a partial view on a page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203881/

相关文章:

ruby-on-rails - Ruby on rails 全局变量?

ruby-on-rails - 在 Rails 中批量导入 CSV?

ruby-on-rails - Rails f.select 试图禁用下拉菜单被更改

ruby-on-rails - Rails 为什么我得到未定义的方法

jquery - 在 Rails 中,如何在没有 的情况下发送 AJAX 请求?在数据中?

ruby-on-rails - 如何在 rspec 测试中忽略 ApplicationController 中的 rescue_from?

ruby-on-rails - Ruby aws-sdk - 授予所有用户权限

html - 如何将参数从一个渲染器传递到另一个渲染器以在模板中加载特定内容

ruby-on-rails - 在 Rails 中测试 Controller 助手重定向

ruby-on-rails - 使用 Sprockets 生成 javascript list