我在github存储库中找到了这段代码 https://github.com/heroku/hstore_example。非常感谢Richard Schneeman,我发现在Railspeak中用于接受html数据的hstore数据的用户输入的唯一示例。其他人只是展示了如何在控制台中使用它(我不认为我的用户将很快启动命令行窗口)。
我有两个问题:1,为什么“键”这个词在第5行重复两次? 2,在底部,在锚标记之后,它表示herf =“#”。假设这是一个错字是否安全,他的意思是“href?”该链接不会引导任何地方,并且该类是由此处列出的代码下方的脚本使用的JS选择器。是故意拼错,以防止采取行动?
<%= f.fields_for :data, @product.data do |d| %>
<% @product.data.try(:each) do |key, value| %>
<div class="row">
<p class='span3'>
<%= text_field_tag key, key, :class => 'text_field dynamicAttributeName' %>
</p>
<p class='span3'>
<%= d.text_field key, :class => 'text_field', :value => value %>
</p>
<p class='span1'>
<a herf='#' class='btn removeRow'>X</a>
</p>
</div>
<% end %>
<%- end -%>
同样在这个应用程序(同一个回购)中,我们找到了这个代码:
<%= form_tag hstore_queries_path, :method => :get, :remote => true, :id => 'hstore_query' do %>
<p>Find:</p>
<%= select_tag 'query_type', "<option value='key_eql'>key equal to ? </option>
<option value='key_value_eql'>key equal to value</option>
<option value='key_not_value'>key not equal to value</option>
<option value='key_like_value'>key like value</option>".html_safe %>
<%= text_field_tag :key , nil, :placeholder => 'Key' %>
<%= text_field_tag :value , nil, :placeholder => 'Value', :class => 'hide' %>
<br />
<%= submit_tag "Run Query", :class => 'btn btn-primary' %>
<%- end -%>
它来自部分用于为db创建搜索工具。在选择框代码下方,还有另一个text_field标记 - 这次是单词:key表示为符号。我可以看到在上面的代码块中,键是一个迭代器变量(虽然我不知道为什么它有两次,我不知道它们中的哪一个引用了迭代器)。我没有看到,在较低的块中,是对模型,“产品”或数据库字段,“数据”的任何引用。 “它是db表中唯一的hstore,但它至少不需要在某处引用?:Key本身不是一个字段,也不是:value - 抱歉我是新手,但是怎么做Rails知道什么是db字段被引用?它在partial中没有任何地方,也没有通过引发它的render命令传递。
答案 0 :(得分:0)
1,为什么“key”这个词在第5行重复了两次?
将变量key
的值传递给text_field_tag
的前两个参数。这些是name
和value
参数。 key
变量在第2行定义。
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag
2,在底部,在锚标记之后,它表示herf =“#”。假设这是一个错字是否安全,他的意思是“href?”
是的,这只是一个错字。