我试图让用户输入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
我很感激帮助!我确定这是一个愚蠢的简单解决方案,但我似乎无法自己找到答案
答案 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中。