【问题标题】:select option tag in ror?在 ror 中选择选项标签?
【发布时间】:2012-01-06 06:29:31
【问题描述】:

我是 ror 的新手。

rails 中的选项选择标签

<%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>' %>

生成这个 html:

<select id="city_id" name="city_id">
    <option value="1">Lisbon</option>
<option value="2">hjkLisbon</option>
</select>

和选项选择标签

<%= select_tag(:city_id, options_for_select([['Lisbon', 1], ['Madrid', 2]])) %>

生成这个 html:

<select id="city_id" name="city_id">
<option value="1">Lisbon</option>
<option value="2">Madrid</option>
</select>

对于第二个选项选择标签,我得到带有选项的下拉菜单,但在第一个选项中我没有得到它,第一个选项中只有下拉菜单,但没有选项。 谁能解释一下为什么会这样?

【问题讨论】:

    标签: ruby-on-rails ruby select drop-down-menu option


    【解决方案1】:

    如果你只有这两个城市你可以使用普通的html

    <select id="city_id" name="city_id">
    <option value="1">Lisbon</option>
    <option value="2">Madrid</option>
    </select>
    

    如果您从数据库中获取城市,您可以这样做

    select_tag ‘city_id’, options_for_select(@cities.collect{ |u| [u.name, u.id] })
    

    这会产生类似的东西:

    <select id="city_id" name="city_id">
      <option value="1">Lisbon</option>
      <option value="2">Madrid</option>
    </select>
    

    不要害怕使用 html。最简单的解决方案就是最好的解决方案。

    【讨论】:

    • 因为我是 Rails 新手,所以我想知道为什么第一个代码即使生成相同的 html 也不起作用。
    • rails 方法对于您如何传递选项非常特别。 select_tag 是一种导轨方法。您将选项发送到 select_tag 方法的第一种方式不正确。
    【解决方案2】:

    参考this

    改变

    <%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>' %>
    

    <%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>') %>
    

    您没有关闭选择标签,即缺少)

    【讨论】:

      【解决方案3】:

      如果你真的想在编辑页面上选择国家名称,那么..

      <%= f.select :country, (country_name), :selected => @model.country %>
      

      country_name 是 helper 中的一个方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多