首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用deface覆盖狂欢中的视图:如何添加输入及其当前值?

用deface覆盖狂欢中的视图:如何添加输入及其当前值?
EN

Stack Overflow用户
提问于 2012-12-10 01:14:34
回答 1查看 2.2K关注 0票数 3

我正在尝试向一个已经存在于Spree管理视图中的表单添加一个输入。下面是覆盖文本(我去掉了一些以显示为中心和嘈杂的内容):

代码语言:javascript
复制
new_html = "
  <div id='neato_new_field'>
    <p id='product_display_value'>
      <label for='display_value'>Display Value</label>
      <br>
      <input type='text' name='product[display_value]' size='30' id='product_display_value' value=''>
    </p>
  </div>"

Deface::Override.new(:virtual_path  => "spree/admin/products/_form",
                     :insert_after => "div.clearfix",
                     :text          => new_html,
                     :name          => "add_display_value")

我需要知道的是如何在输入上设置“value”属性的值,以便在呈现此视图时获取该对象上的当前内容。

我尝试在其中输入value='#{@product.display_value}‘,但它报告@product为空。我甚至可以使用这样的插值来拾取display_value吗?这个污损是在控制器尝试渲染之前还是之后完成的?

我现在想知道如何解决这个问题。我是否必须从已经存在的html中略去产品id,使用它来加载产品,然后将该值放入其中?我真的希望我错过了一些基本的东西,使这成为一个微不足道的问题来解决:P这在某种程度上就是很多狂欢定制的情况--一开始不清楚如何做,但一旦我弄清楚了,实现我的定制就像馅饼一样容易……

谢谢,jd

EN

回答 1

Stack Overflow用户

发布于 2012-12-10 08:36:25

一旦我理解了,答案就相当简单了。

我没有对一些随机的html标记使用:text =>,而是指向了一个分部,结果得到了您在任何模板视图中获得的所有整洁行为--特别是作用域中的变量。

最终解决方案如下所示:

代码语言:javascript
复制
Deface::Override.new(:virtual_path => "spree/admin/products/_form",
                     :insert_after => "div.clearfix",
                     :partial      => "partials/admin",
                     :name         => "add_display_value")

和部分:

代码语言:javascript
复制
<div>
  <%= f.field_container :display_value do %>
    <%= f.label :display_value, t(:display_value) %>
    <br>
    <%= f.text_field :display_value, :size => 30, :value => @product.display_value %>
  <% end %>
<div>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13789672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档