Jquery 根据Ruby中的db值在下拉列表中选择值
我有一个简单的Sinatra应用程序,你可以用它记录你在某个晚上喝的啤酒、数量和类型。要编辑其中一个用户输入的夜晚,我有一个简单的表单,反映创建饮酒事件时输入的值:Jquery 根据Ruby中的db值在下拉列表中选择值,jquery,ruby-on-rails,ruby,sinatra,Jquery,Ruby On Rails,Ruby,Sinatra,我有一个简单的Sinatra应用程序,你可以用它记录你在某个晚上喝的啤酒、数量和类型。要编辑其中一个用户输入的夜晚,我有一个简单的表单,反映创建饮酒事件时输入的值: <input type="text" value="<%= @beer.name %>" name="name"/> <input type="text" value="<%= @beer.price %>" name="price"/> 因此,从数据库值填充值是很好的。现在,如何选
<input type="text" value="<%= @beer.name %>" name="name"/>
<input type="text" value="<%= @beer.price %>" name="price"/>
因此,从数据库值填充值是很好的。现在,如何选择下拉列表的值
<select name="night">
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
<option value="Wednesday">Wednesday</option>
<option value="Thursday">Thursday</option>
<option value="Friday">Friday</option>
<option value="Saturday">Saturday</option>
<option value="Sunday">Sunday</option>
</select>
我发现我可以使用内联jquery来实现这一点:
<script>
$(document).ready(function(){
$(".edit select[name=type] option").each(function(){
if ($(this).val() == "<%= @beer.type %>"){
$(this).attr("selected", true );
}
});
$(".edit select[name=night] option").each(function(){
if ($(this).val() == "<%= @beer.night %>"){
$(this).attr("selected", true );
}
});
});
</script>
但我真的不想求助于内联js。有什么建议吗?我会这样做
<select name="night">
<% ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"].each do |day| %>
<option <%= 'selected="selected"' if day == @beer.night %> value="<%= day %>"><%= day %></option>
<% end %>
</select>
您可能希望从选择下拉框的简单id选择器开始,如下所示:
<select id="day">...</select>
Then create an external javascript file, call it whatever you like such as day_select_handler.js and include it in your view.
<html>
<head>
<script type="text/javascript" src="day_select_handler.js"></script>
</head>
...
这样,javascript文件将在加载此页面时加载。
而且它不是内联的,也可以在其他页面中重复使用。javascript中包含ruby实例变量,因此将其放入js文件不起作用,我会说使用数据属性将实例变量放入视图中。然后在javascript中使用$'something'检索数据属性。数据'beer\u type'