在Ruby Rails中,我想显示一个文本框,您可以在其中输入一个值,旁边有一个按钮,可根据您在文本框中输入的内容执行搜索。我的代码:
<%= number_field_tag :user_search_id, params[:user_search_id] %>
<%= button_to 'Search by user id', {:controller=>"posts", :action=>"search", :user_id => params[:user_search_id]} %>
但是,无论输入到文本框中的是什么,它都不会放在params哈希中,而我最终都没有向控制器传递任何信息。
这是控制器代码:
def search
@post = Post.find(params[:user_id])
respond_to do |format|
format.html { redirect_to posts_url }
format.json { render json: @post }
end
#redirect_to posts_url
end
注意我试图传递两个:user_id和:user_search_id,两者都没有正确传递。但是,如果我传递一个文字(数字1),它会正确传递,所以它看起来像:user_search_id值永远不会与该键相关联。
答案 0 :(得分:1)
你需要一张表格......
<%= form_tag({:controller=>"posts", :action=>"search"}, method: :get) do %>
<%= number_field_tag :user_search_id %>
<%= submit_tag 'Search by user id', name: nil %>
<% end %>
在您的控制器中,您可以使用:
params[:user_search_id]
编辑 - 使用上面的表单,您将能够访问控制器中的params[:user_search_id]
。现在,您可以使用where
找到正确的帖子。
@post = Post.where(:id => params[:user_search_id])