【发布时间】:2014-01-14 16:25:15
【问题描述】:
我正在尝试创建一个带有按钮的单字段表单。该字段将是用户输入其用户名的地方。该字段的值将通过以下代码传递给变量@username:
def home
require 'open-uri'
@username = "brink"
@url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}"
end
如您所见,@username 变量是硬编码的。我想让用户输入他想要的用户名。
之后,用户应该被重定向到一个他可以看到他的搜索结果的页面。
我将如何实现这样的功能?不太确定从哪里开始。我可以查看哪些文档来寻求帮助?
我查看的内容/评论
- 我读到表单本质上是发送 POST 请求。据我目前的理解,我不需要发布请求。我需要做的就是获取用户指定的内容并将其替换为 URL
-
按照 Rich Peck 的建议,我创建了一个新的搜索 带有主页动作的控制器。然后我将
get "search(/:username)", :to => "search#home"添加到我的路线中。这很棒,因为它可以输入 any 用户名进入浏览器并返回一个信息表。 现在的问题是,无论我在 浏览器,传递给爬虫的用户名仍然是 硬编码到我的控制器中的那个(在本例中为 Brink)。
我正在寻找的是一种提交表单的方法,它会导致
@username值相应更改。至少,我们 应该能够手动更改浏览器中的链接,并且 达到同样的效果。 - 从我的控制器中删除
@username = "brink"不起作用。 -
这是我创建的表单:
<%= form_tag("/search", method: "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %> <% end %>当我提交它时,它会运行带有硬编码
@username的代码 价值。不过,这让我想到了。我创建的每一个表格都会 这个应用程序做同样的事情吗? - 我几乎是一片空白。我觉得如此接近,却又如此遥远。哈哈。这要死我了!我想我会阅读一些路线和表格,看看它是否能让我更接近解决这个问题。
【问题讨论】:
-
在重定向之前,您是否需要在 Rails 应用程序中做一些工作,或者“将用户发送到可以查看搜索结果的页面”?
-
需要做一些工作。用户必须重定向到的页面是我的应用程序中的页面。我爬了
@url。用户应该被重定向到我的应用程序中的一个页面,该页面显示@url的内容,并使用了他的用户名。
标签: javascript ruby-on-rails ruby forms ruby-on-rails-4