我正在尝试使用按钮创建单字段表单。该字段将是用户输入其用户名的位置。该字段的值将在以下代码中传递给变量@username
:
def home
require 'open-uri'
@username = "brink"
@url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}"
end
如您所见,@username
变量是硬编码的。我想让用户输入他想要的用户名。
之后,应该将用户重定向到可以查看搜索结果的页面。
我如何实现这样的功能?不太清楚从哪里开始。我可以查看哪些文档来寻求帮助?
我看过/评论
根据Rich Peck的建议,我创建了一个新搜索
控制器与家庭行动。然后我将get
"search(/:username)", :to => "search#home"
添加到我的路线中。
这很棒,因为它可以输入任何 用户名进入浏览器并返回一个信息表。 现在的问题是,无论我输入的用户名是什么 浏览器,传递给抓取工具的用户名仍然是 硬编码到我的控制器中的那个(在这种情况下,Brink)。
我正在寻找的是一种提交表格的方法
@username
值会相应更改。至少,我们
应该能够手动更改浏览器中的链接
达到同样的效果。
@username = "brink"
不起作用。以下是我创建的表单:
<%= form_tag("/search", method: "get") do %>
<%= label_tag(:q, "Search for:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
当我提交它时,它使用硬编码@username
运行代码
值。不过,这让我有所思考。我将创造的每一种形式
这个应用程序做同样的事情?
答案 0 :(得分:2)
<强>路线强>
你的问题可以通过一些routes
魔法来解决:
#config/routes.rb
get "search(/:username)", :to => "search#home"
每次向params[:username]
http://hiscore.runescape.com/search/your_user_name
<强> JS 强>
我要做的就是用JS来处理表单提交:
#app/assets/javascripts/application.js
$("user_form").on("submit", function() {
window.location.href = "/search/" + $("input").val();
});
答案 1 :(得分:0)
通过在控制器中将@username
设置为params[:username]
来解决此问题。
在视图中,我的表单标签和文本字段标记如下所示:
<%= label_tag(:username, "Search for:") %>
<%= text_field_tag(:username) %>
我的神Rails很神奇。发现这一切都是由于反复试验。我不知道怎么会找到答案。