Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用表单而不是硬编码值?_Javascript_Ruby On Rails_Ruby_Forms_Ruby On Rails 4 - Fatal编程技术网

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
变量是硬编码的。我想允许用户输入他想要的用户名

之后,用户应该被重定向到一个页面,在那里他可以看到他的搜索结果

我将如何实现这样的功能?不太确定从哪里开始。我可以查看哪些文档来找到这方面的帮助

我的调查/评论

  • 我读到表格本质上是发送POST请求。根据我目前的理解,我不需要post请求。我所需要做的就是将用户指定的内容替换到URL中
  • 根据Rich Peck的建议,我创建了一个新的搜索引擎 具有主操作的控制器。然后我添加了
    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) %>