我正在尝试在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 %>
我正在使用脚手架生成的标准控制器'show'方法:
# GET /students/1
# GET /students/1.json
def show
@student = student_scope.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @student }
end
end
我很感激有关表单url / post方法/其他路由组合的任何建议,以使其工作。这是你通常这样做的方式是Rails,还是我应该设置一个新的控制器方法来处理提交的表单?
提前致谢
答案 0 :(得分:2)
因为它不完全是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 %>