jay*_*del 3 ruby-on-rails spree deface
我正在尝试向其中一个Spree管理员视图中已存在的表单添加输入.这是覆盖文本(我删除了一些以显示为中心和嘈杂的残骸):
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")
Run Code Online (Sandbox Code Playgroud)
我需要知道的是在输入上设置'value'属性的值,以便在渲染此视图时获取当前在该对象上的内容.
我尝试将value='#{@product.display_value}'放在那里,但它抱怨@product为零.我甚至可以使用这样的插值来获取display_value吗?这是在控制器甚至尝试渲染之前还是之后完成的这种破坏?
我现在想知道如何解决这个问题.我是否必须从已经存在的html中删除产品ID,使用它来加载产品然后把那个值放在那里?我真的希望我错过了一些基本的东西,这使得这个问题很难解决:P很多Spree定制都是这种情况 - 一开始我不清楚如何做到这一点但是一旦我想到它out,实现我的自定义很简单...
谢谢,jd
一旦我明白了,答案就相当容易了.
而不是使用:text =>到一些随机的html标记,我指出了一个部分结果,你得到了任何模板视图中的所有整洁行为 - 特别是范围中的变量.
最终解决方案如下所示:
Deface::Override.new(:virtual_path => "spree/admin/products/_form",
:insert_after => "div.clearfix",
:partial => "partials/admin",
:name => "add_display_value")
Run Code Online (Sandbox Code Playgroud)
和部分:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |