Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails搜索表单提交显示方法_Ruby On Rails_Search_Controller - Fatal编程技术网

Ruby on rails Rails搜索表单提交显示方法

Ruby on rails Rails搜索表单提交显示方法,ruby-on-rails,search,controller,Ruby On Rails,Search,Controller,我正在尝试在Rails视图中设置一个表单,以便将id提交回控制器中的show方法。“我的表单”使用“自动完成”设置隐藏的id字段: <%= form_tag students_path, id: 'search_student_name', method: :get do %> <%= text_field_tag :search_name, '', size: 30 %> <%= hidden_field_tag :id %> <%= su

我正在尝试在Rails视图中设置一个表单,以便将id提交回控制器中的show方法。“我的表单”使用“自动完成”设置隐藏的id字段:

<%= form_tag students_path, id: 'search_student_name', method: :get do %>
  <%= text_field_tag :search_name, '', size: 30 %>
  <%= hidden_field_tag :id %>
  <%= submit_tag "Search", name: nil %>
<% end %>
如果您能就如何结合表单url/post方法/其他路径来实现这一点提供建议,我将不胜感激。这是Rails通常使用的方法,还是我应该设置一个新的控制器方法来处理提交的表单


提前感谢

因为这不完全是一场Restful秀,所以您应该创建一个新动作,搜索

#routes.rb
post 'search' => 'students#search'

#student_controller.rb
def search
   @student = Student.find_by_name params[:search_name]
   render action: 'show'
end
据我所知,表单不需要发送:id

<%= form_tag search_path, method: :get do %>
  <%= input_tag :search_name, type: 'text' %>
  <%= submit_tag "Search" %>
<% end %>


你能解释一下它是如何使用autocomplete来填充你的用户id的吗?@Zippie我正在用javascript更新隐藏字段以选择项目。students.js.coffee:
$(“#搜索#学生名#搜索#名称”).autocomplete minLength:3,来源:“/students/search(名称)建议”,选择:(事件,用户界面)->$(“#搜索#学生名#id”).val ui.item.value#更新文本框@value=ui.item.label$(搜索#学生名#).submit()false
谢谢@cmaitchison,现在可以了。我使用:id是因为名称实际上是first_name和last_name,我可以用autocomplete填充:id字段。我认为这将简化搜索查询,只返回一个值(在名称重复的情况下)。再次感谢,没问题。很乐意帮忙。您知道吗?在rails3中,您可以将每个问题的一个答案标记为:
post'search',:to=>studnets\search'
<%= form_tag search_path, method: :get do %>
  <%= input_tag :search_name, type: 'text' %>
  <%= submit_tag "Search" %>
<% end %>