Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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
Html 如何使用select_标记帮助器从选定的选项中获取值_Html_Ruby On Rails_Ruby - Fatal编程技术网

Html 如何使用select_标记帮助器从选定的选项中获取值

Html 如何使用select_标记帮助器从选定的选项中获取值,html,ruby-on-rails,ruby,Html,Ruby On Rails,Ruby,如何获取在使用RubyonRails中的select_标记助手构建的上选择的选项的值 代码如下所示: <%= f.label "Favorite Team" %> <%= select_tag :fav_league, options_for_LEAGUEs, :onchange => 'check1()' %> <%= f.label "Favorite Team" %> <%= select_tag :fav_league, options

如何获取在使用RubyonRails中的select_标记助手构建的。 示例:有一个表单,我想知道该用户居住的县的名称,因此我创建了一个用户选择州的第一个上会出现一组不同的选项,他选择他的县,这是将与表格一起提交的选项,不带州首字母。同样的情况也发生在我的web应用程序上,但是对于国家联赛和球队,这就是为什么联盟的选项有一个包含每个联赛名称的数组

Ps:我希望它是Ruby的,如果它可以移动到javascript,那会更好,但是你必须解释一下怎么做

代码如下所示:

<%= f.label "Favorite Team" %>
<%= select_tag :fav_league, options_for_LEAGUEs, :onchange => 'check1()' %> 
<%= f.label "Favorite Team" %>
<%= select_tag :fav_league, options_for_LEAGUEs, :onchange => 'check1()' %> 
请注意以下onclick中的用法:

app/views/users/index.html:

<h1>Users#index</h1>
<p>Find me in app/views/users/index.html.erb</p>

<% options_for_LEAGUEs = [
    ["league1", 1],
    ["league2", 2],
    ["league3", 3]
  ]
%>

<div>
<%= 
select_tag(
  :fav_league,
  options_for_select(options_for_LEAGUEs),
  onclick: 'check1(this)'
)
%>
</div>

<div id="result">
</div>
对评论的答复:

基于联盟选择动态创建单个团队选择,然后让用户提交表单以将团队选择发送到服务器,可能更容易。下面是一个例子:

您可以在视图中使用带有数据属性的空名称,并使用rails将团队名称插入到数据属性中,这将允许在浏览器中执行的javascript从html中检索这些名称:

app/views/users/index.html.erb:

<h1>Users#index</h1>
<p>Find me in app/views/users/index.html.erb</p>

<div>
<%= form_for @user, url: {action: 'dostuff', method: "post"} do |f| %>

<%= f.label "Favorite Team" %>
<%= select_tag(
  :fav_league, 
  "<option disabled selected>--select league--</option>#{options_for_select(@leagues)}".html_safe
)
%>

<%= content_tag :div, id: "teams_div", data: {teams: @teams_for_league} do %>
<% end %>

<%= f.submit('Submit') %>
<% end %>
</div>
app/assets/javascripts/users.js:

$document.readyfunction{ $fav_league.onchange,函数{ var$selected=$this.findoption.filter:selected; var league_choice=$selected.text; var$teams\u div=$'teams\u div'; var teams_arr=$teams_div.datateams[联盟选择]; var团队名称, $new_select; $teams_div.empty; $new_select=$ , {name:team_select} .附于$teams_div; $new\u select.append $, {已禁用:真,已选择:真} .文字选择小组- ; 团队名称为{ $new\u select.append $.textteam\u name.attr'value',team\u name ; }; }; }; 如果选择一个团队,然后提交表单,您将在服务器运行的窗口中看到以下输出:

...
...
----------
{"utf8"=>"✓", "_method"=>"patch",
"authenticity_token"=>"By2pZpUTxK2JZHBHYA7C4tryFTx2btBLnoGjdYpiOxPeHaHcLAO0VJue64HlTLGVLHzkZkdj4SRqAAt85Mn32A==",    
"fav_league"=>"2", "team_select"=>"team4", "commit"=>"Submit",  
"method"=>"post", "controller"=>"users", "action"=>"dostuff"}                            
----------
**** The user chose: team4 *****
  Rendered users/dostuff.html.erb within layouts/application (0.0ms)
Completed 200 OK in 20ms (Views: 19.2ms | ActiveRecord: 0.0ms)
代码如下所示:

<%= f.label "Favorite Team" %>
<%= select_tag :fav_league, options_for_LEAGUEs, :onchange => 'check1()' %> 
<%= f.label "Favorite Team" %>
<%= select_tag :fav_league, options_for_LEAGUEs, :onchange => 'check1()' %> 
请注意以下onclick中的用法:

app/views/users/index.html:

<h1>Users#index</h1>
<p>Find me in app/views/users/index.html.erb</p>

<% options_for_LEAGUEs = [
    ["league1", 1],
    ["league2", 2],
    ["league3", 3]
  ]
%>

<div>
<%= 
select_tag(
  :fav_league,
  options_for_select(options_for_LEAGUEs),
  onclick: 'check1(this)'
)
%>
</div>

<div id="result">
</div>
对评论的答复:

基于联盟选择动态创建单个团队选择,然后让用户提交表单以将团队选择发送到服务器,可能更容易。下面是一个例子:

您可以在视图中使用带有数据属性的空名称,并使用rails将团队名称插入到数据属性中,这将允许在浏览器中执行的javascript从html中检索这些名称:

app/views/users/index.html.erb:

<h1>Users#index</h1>
<p>Find me in app/views/users/index.html.erb</p>

<div>
<%= form_for @user, url: {action: 'dostuff', method: "post"} do |f| %>

<%= f.label "Favorite Team" %>
<%= select_tag(
  :fav_league, 
  "<option disabled selected>--select league--</option>#{options_for_select(@leagues)}".html_safe
)
%>

<%= content_tag :div, id: "teams_div", data: {teams: @teams_for_league} do %>
<% end %>

<%= f.submit('Submit') %>
<% end %>
</div>
app/assets/javascripts/users.js:

$document.readyfunction{ $fav_league.onchange,函数{ var$selected=$this.findoption.filter:selected; var league_choice=$selected.text; var$teams\u div=$'teams\u div'; var teams_arr=$teams_div.datateams[联盟选择]; var团队名称, $new_select; $teams_div.empty; $new_select=$ , {name:team_select} .附于$teams_div; $new\u select.append $, {已禁用:真,已选择:真} .文字选择小组- ; 团队名称为{ $new\u select.append $.textteam\u name.attr'value',team\u name ; }; }; }; 如果选择一个团队,然后提交表单,您将在服务器运行的窗口中看到以下输出:

...
...
----------
{"utf8"=>"✓", "_method"=>"patch",
"authenticity_token"=>"By2pZpUTxK2JZHBHYA7C4tryFTx2btBLnoGjdYpiOxPeHaHcLAO0VJue64HlTLGVLHzkZkdj4SRqAAt85Mn32A==",    
"fav_league"=>"2", "team_select"=>"team4", "commit"=>"Submit",  
"method"=>"post", "controller"=>"users", "action"=>"dostuff"}                            
----------
**** The user chose: team4 *****
  Rendered users/dostuff.html.erb within layouts/application (0.0ms)
Completed 200 OK in 20ms (Views: 19.2ms | ActiveRecord: 0.0ms)

大家好,欢迎来到Stack Overflow。你在问我们如何获得选择权。。。但是你想在哪里使用这个选项呢?我们谈论的是:a在您的规格中确保选择了正确的选项,或b在应用程序中,在用户单击“提交”后,您决定如何处理所选选项,或c在应用程序界面中决定显示与用户不同的内容?有什么我没想到的吗?另外-请编辑您的问题,并向我们展示您试图解决此问题的代码,即使它不起作用。你已经付出了努力,是吗编辑!因为我是Rails的新手,所以我根本没有尝试过任何东西,只有像这样的“check1”%>您好,欢迎使用Stack Overflow。你在问我们如何获得选择权。。。但是你想在哪里使用这个选项呢?我们谈论的是:a在您的规格中确保选择了正确的选项,或b在应用程序中,在用户单击“提交”后,您决定如何处理所选选项,或c在应用程序界面中决定显示与此不同的内容
电子用户?有什么我没想到的吗?另外-请编辑您的问题,并向我们展示您试图解决此问题的代码,即使它不起作用。你已经付出了努力,是吗编辑!由于我是Rails的新手,我根本没有尝试过任何东西,只有像“check1”%>check1这样的东西是页面底部的一个函数。它隐藏了用户不会使用的,根据他选择的联赛,会出现不同的球队,我不知道这是否是一个坏习惯。所以这个函数隐藏了所有的内容,然后删除包含该联盟球队的。每个联赛我都有一个上的de hide。这就是为什么价值对我来说很重要。团队的名字才是最重要的,而不是最重要的league@RedManBrasil:我不知道这是否是一种糟糕的做法——根据联赛选择动态创建一个球队选择可能更容易。我在回答的末尾加了一个例子。