text_field_tag中的Rails选项标记令

时间:2015-08-02 04:09:14

标签: javascript ruby-on-rails postgresql hstore

我在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命令传递。

1 个答案:

答案 0 :(得分:0)

  

1,为什么“key”这个词在第5行重复了两次?

将变量key的值传递给text_field_tag的前两个参数。这些是namevalue参数。 key变量在第2行定义。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag

  

2,在底部,在锚标记之后,它表示herf =“#”。假设这是一个错字是否安全,他的意思是“href?”

是的,这只是一个错字。