2013-02-11 91 views
0

在Ruby 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

你需要一個形式...

<%= 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]) 
+0

沒有骰子 - 同樣的問題,控制器沒有看到該參數散列標籤。通過將它傳遞給一個局部變量進行確認,該變量報告內容爲零。我是否需要通過移動到新頁面來註冊文本框的內容,然後才能使用它? – user2062016 2013-02-11 17:02:00

+0

你在哪裏試圖使用'params [:user_search_id]'?它應該在控制器的帖子中,動作搜索。請在你的問題中包括控制器。此外,您應該能夠在網址中查看搜索。 – gabrielhilal 2013-02-11 17:08:27

+0

使用user_search_id允許用戶通過密鑰進行搜索。通過文字工作,我只是不能在文本框中得到什麼。附上我的原始帖子和控制器代碼。 – user2062016 2013-02-11 18:05:11

相關問題