Ruby on rails 将搜索表单链接到特定URL

Ruby on rails 将搜索表单链接到特定URL,ruby-on-rails,forms,search,Ruby On Rails,Forms,Search,我正在努力实现以下目标: 当用户在www.something.com的表单中输入一个5位数的ID时,用户将被重定向到www.something.com/get/(5位数ID) 我知道手动输入urlwww.something.com/acquire/(5位ID)会触发所需的操作,但如何创建一个这样做的表单呢 我是否可以通过实现这一点 Rake routes具有以下条目 获取/获取/:pid(:格式)产品#获取 {:id=>/\d+/} 当前在控制器中 def obtain scrapy

我正在努力实现以下目标:

当用户在
www.something.com
的表单中输入一个5位数的ID时,用户将被重定向到
www.something.com/get/(5位数ID)

我知道手动输入url
www.something.com/acquire/(5位ID)
会触发所需的操作,但如何创建一个这样做的表单呢

我是否可以通过
实现这一点

Rake routes具有以下条目

获取/获取/:pid(:格式)产品#获取 {: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

如果您提交表单,您将有一个函数或一些代码来处理输入,即:至少提取请求。查询类似于:

$var = request.query("ID")
因此,在代码执行其任务后,您只需要一行代码就可以进行重定向,如:

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

在您的视图中,创建一个表单:

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

我不知道您的
get
操作是否是通过
get
触发的,但如果它不只是将其更改为触发的内容(post、put)。

get实际上不会在数据库中搜索特定的pid。它实际上将其传递给另一个函数以执行其他函数。我不确定我应该在这里修改什么。哦,我看到你添加了它。我还修改了答案。这是好的还是我遗漏了什么?这对我想做的不起作用。我希望表单将ID传递给products#Acquire,并让Acquire执行必要的操作
@product=product.find_by_pid(params[:pid])
可能会失败,因为获取将实际创建一个新产品。Nvm,刚刚看到它实际上更新了,仍然在检查它。再次编辑使它更干燥。如果
获取
操作有效,我想这应该行得通哦,天哪,等一下,我会编辑的,没有必要为此做额外的操作。请稍后查看。将您的elsif更改为其他。会更“正确”。