2013-03-16 67 views
0

我試圖實現以下目標:鏈接搜索表單到特定的URL

當用戶輸入在www.something.com形式一個5位數的ID,用戶會被重定向到www.something.com/obtain/(5 digit ID)

我知道手動輸入url www.something.com/obtain/(5 digit ID)會觸發所需的操作,但我如何創建一個表單來代替?

有無論如何,我可以通過<%= form_tag .... %>實現這一點?

瑞克路由具有以下條目

獲得/obtain/:pid(.:format)的產品#獲得 {:ID =>/\ d + /}

目前在控制器

def obtain 
    scrapy = Scraper.new 

    @product = scrapy.scrape((params[:pid])) 

    if @product 
     redirect_to @product, notice: 'Product successfully updated' 
    elsif 
     redirect_to root_path, notice: 'Invalid product requested' 
    end 
    end 
+0

改變你的elsif爲其他。會更「正確」。 – Zippie 2013-03-17 00:27:14

回答

0

如果你提交一個表單,你將有一個功能或一些代碼來處理輸入,即:至少提取request.query的,如:

$var = request.query("ID") 

使代碼執行後,它的任務/ s的所有你需要的是像一個重定向行:

whatever.redirect("www.something.com/obtain/" & $var 
0

在您的視圖中創建一個表單:

<%= form_tag({:controller=>"products", :action=>"obtain"}, :method => "get") do %> 
     <%= text_field_tag(:pid) %> 
     <%= submit_tag "Search with PID" %> 
<% end %> 

我不知道您的obtain動作是否由get觸發,但是如果它不只是將其更改爲觸發的任何動作(發佈,放置)。

+0

獲取並不實際搜索數據庫中的特定pid。它實際上將它傳遞給另一個函數來執行其他功能。我不確定我應該在這裏修改什麼。 – rlhh 2013-03-17 00:19:51

+0

你能提供更多必要的代碼嗎? – Zippie 2013-03-17 00:21:51

+0

哦,我看到你加了它。我也修改了答案。這是好還是我錯過了什麼? – Zippie 2013-03-17 00:23:17