0

特定の夜に飲んだビール、その量、種類を記録するために使用できるシンプルな Sinatra アプリがあります。これらのユーザーが入力した夜の 1 つを編集するために、飲酒イベントが作成されたときに入力された値を反映する単純なフォームがあります。

<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 に頼る必要はありません。助言がありますか?

4

2 に答える 2

1

私はこのようなことをします

<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>
于 2012-09-13T17:19:05.280 に答える
0

次のように、選択ドロップダウン ボックスの単純な 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 ファイルが読み込まれます。また、インラインではなく、他のページでも再利用できます。

于 2012-09-13T18:00:53.600 に答える