将表格输入发送到控制器功能

时间:2014-10-16 03:05:02

标签: ruby ruby-on-rails-4

我试图让用户输入ID,然后查看该ID的子项(通过自联接关联)。我的子功能在rails控制台中工作,但不在控制器中工作,因为我怀疑我将表单输入发送到控制器是错误的。

控制器:

    def index
..............
    if params[:children]
      @guideline = Guideline.find(params[:seeChildren])
      @guideline.children
    else
      @guidelines = Guideline.all
    end
  end

形式:

<%= form_tag(guidelines_path, :method => "get", id: "search-form") do %>
  <td><%= label_tag(:seeChildren, "See Immediate Children")%></td>
  <td><%= text_field_tag :seeChildren, params[:seeChildren], placeholder: "Enter ID" %></td>
  <td><%= submit_tag "Search", :name => nil %></td>
<% end %>

路线:

        Prefix Verb   URI Pattern                    Controller#Action
    guidelines GET    /guidelines(.:format)          guidelines#index
               POST   /guidelines(.:format)          guidelines#create
 new_guideline GET    /guidelines/new(.:format)      guidelines#new
edit_guideline GET    /guidelines/:id/edit(.:format) guidelines#edit
     guideline GET    /guidelines/:id(.:format)      guidelines#show
               PATCH  /guidelines/:id(.:format)      guidelines#update
               PUT    /guidelines/:id(.:format)      guidelines#update
               DELETE /guidelines/:id(.:format)      guidelines#destroy
          root GET    /                              welcome#index

我很感激帮助!我确定这是一个愚蠢的简单解决方案,但我似乎无法自己找到答案

1 个答案:

答案 0 :(得分:0)

  

我怀疑我将表单输入错误地发送给控制器。

text_field_tag :seeChildren, params[:seeChildren], placeholder: "Enter ID" %>

请改为:

text_field_tag :seeChildren, nil, placeholder: "Enter ID" %>

将创建此html:

<input id="seeChildren" type="text" placeholder="Enter ID" name="seeChildren">

当用户提交表单时,发送到服务器的其中一个名称/值对将是seeChildren="some text",其中seeChildren是文本字段的名称属性,&#34;某些文本& #34;是用户输入的内容。

params[:seeChildren]在用户提交表单 之前不会存在。当浏览器将表单创建的请求发送到服务器时,rails会将所有名称/值对提取到params Hash中。