上会出现一组不同的选项,他选择他的县,这是将与表格一起提交的选项,不带州首字母。同样的情况也发生在我的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:我不知道这是否是一种糟糕的做法——根据联赛选择动态创建一个球队选择可能更容易。我在回答的底部添加了一个示例。check1是页面底部的一个函数。它隐藏了用户不会使用的。每个联赛我都有一个,根据他选择的联赛,会出现不同的球队,我不知道这是否是一个坏习惯。所以这个函数隐藏了所有的内容,然后删除包含该联盟球队的上的de hide。这就是为什么价值对我来说很重要。团队的名字才是最重要的,而不是最重要的league@RedManBrasil:我不知道这是否是一种糟糕的做法——根据联赛选择动态创建一个球队选择可能更容易。我在回答的末尾加了一个例子。