Javascript 使用表单而不是硬编码值?
我正在尝试创建一个带有按钮的单字段表单。该字段将是用户输入用户名的位置。该字段的值将传递到以下代码中的变量Javascript 使用表单而不是硬编码值?,javascript,ruby-on-rails,ruby,forms,ruby-on-rails-4,Javascript,Ruby On Rails,Ruby,Forms,Ruby On Rails 4,我正在尝试创建一个带有按钮的单字段表单。该字段将是用户输入用户名的位置。该字段的值将传递到以下代码中的变量@username: def home require 'open-uri' @username = "brink" @url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}" end 如您所见,@username变量是硬编码的。我想允许用户输入他想要的用户名 之后,用户应该被重
@username
:
def home
require 'open-uri'
@username = "brink"
@url = "http://hiscore.runescape.com/index_lite.ws?player=#{@username}"
end
如您所见,@username
变量是硬编码的。我想允许用户输入他想要的用户名
之后,用户应该被重定向到一个页面,在那里他可以看到他的搜索结果
我将如何实现这样的功能?不太确定从哪里开始。我可以查看哪些文档来找到这方面的帮助
我的调查/评论
get
“搜索(/:用户名)”,:至=>“搜索#主页”
至我的路线
这很好,因为它可以输入任何
将用户名输入浏览器并返回一个信息表。
现在的问题是,无论我在
浏览器,传递到爬虫程序的用户名仍然是
硬编码到我的控制器中的那个(在本例中为Brink)
我正在寻找的是一种提交表格的方式,它将导致
@username
值将相应更改。至少,我们
应该能够手动和手动更改浏览器中的链接
达到同样的效果@username=“brink”
无效<%= form_tag("/search", method: "get") do %>
<%= label_tag(:q, "Search for:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
当我提交它时,它使用硬编码的@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();
});
通过在控制器中将
@username
设置为params[:username]
来解决
在视图中,我的表单标签和文本字段标签如下所示:
<%= label_tag(:username, "Search for:") %>
<%= text_field_tag(:username) %>
我的上帝是魔法。发现这一切都是由于尝试和错误。我不知道如果不是这样,我怎么会找到答案。在重定向之前,你是否需要在Rails应用程序中做一些工作,或者只需要“将用户发送到一个可以看到搜索结果的页面”就可以了?需要做些工作。用户必须重定向到的页面位于我的应用程序中。我抓取了
@url
。应该将用户重定向到我的应用程序中的一个页面,该页面显示使用其用户名的@url
的内容。再次感谢您的帮助,Rich。。。我已将您的代码添加到我的应用程序中。我的表格应该是什么样的?我会做一些调查直到你回来。我会相应地编辑我的原始帖子。是的。。。我对JavaScript几乎一无所知,所以这一部分对我来说很神奇。
<%= label_tag(:username, "Search for:") %>
<%= text_field_tag(:username) %>