0

在 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]} %>

但是,无论在文本框中输入了什么,它都不会放在参数哈希中,我最终什么也没传递给控制器​​。

这是控制器代码:

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 值永远不会与该键相关联。

4

1 回答 1

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])
于 2013-02-11T16:55:12.763 回答