Ruby Rails:将文本框值传递给Controller

时间:2013-02-11 16:47:26

标签: ruby-on-rails

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

1 个答案:

答案 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])