【问题标题】:Drop-down selection form, in rails 4下拉选择表单,在 rails 4 中
【发布时间】:2016-02-21 16:00:24
【问题描述】:

我正在尝试创建一个下拉表单,它允许从名称表中选择一个名称。

在控制器中我只有:

def selection
   @data = Location.all
end

我在下拉选择表单中渲染这个@data 时遇到了很大的困难。我尝试过的所有操作都会产生错误:“#Location::ActiveRecord_Relation:0x007f07d83b2a90> 的未定义方法 `to_key'”

我知道我可能应该使用“f.collection_select”,可能类似于:

<%= form_for @data do |f| %>
    <%= f.collection_select :name, Location.all, :url, :name %>
<% end %>

对不起,如果这个问题有点愚蠢,我真的是编程新手。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: forms ruby-on-rails-4 form-for


    【解决方案1】:

    我找到了我需要的东西:

    用我使用的数据填充表单:

    @formlist = Location.all.pluck(:name)
    

    我需要的表单代码:

    <%= form_for :select, :url => results_path do |f| %>
      <%= f.select(:name, options_for_select(@formlist))%>
      <%= f.submit %>
    <% end %>
    

    results_path 必须是 post 而不是 get:

    post 'results' => '<mycontroller>#results'
    

    然后可以使用以下命令获取所选名称:

    def results
       @choice = (params[:select])[:name]
    end
    

    现在能够获取@choice 变量允许我根据用户输入返回一些分析。


    我确信有更好的方法可以做到这一点,但我对自己的想法感到满意。

    这里的帖子“http://www.austinstory.com/rails-select-tag-and-options-for-select-explained/”很有帮助

    【讨论】:

      【解决方案2】:

      尝试使用:id 代替:url 作为主键。

      也许这个链接会对你有所帮助:
      http://www.redguava.com.au/2010/12/rails-basics-adding-a-drop-down-list-to-your-forms/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多