0

よろしくお願いします。MySQL データベースに保存した情報を表示する方法をユーザーに提供しています。問題は、ユーザーがレコードに保存した内容に従って、チェックボックスの状態が読み込まれないことです。

    <% if !params[:newitem_id].blank? and @newitem.optimize != 1 %>
    <input type="checkbox" name="optimize" id="optimize">
    <% else %>
    <input type="checkbox" name="optimize" id="optimize" checked="true">
    <% end %>

私の条件ステートメントは、newitem_id があるかどうかを確認することから始まります。これは非表示のフィールドで、すべての @newitem 情報をビューに接続するだけです。

    <input name="newitem_id" type="hidden" value="<%= params[:newitemid] %>" />  

ページの他の場所の条件ステートメントでこれを使用すると、これは正常に機能します。

次に、条件文で @newitem のレコードを調べて、optimize が 1 か 0 かを確認します。@newitem.optimize が 1 の場合は、チェックボックスをオンにします。そうでない場合は、チェックしたくありません。

残念ながら、フィールドが 0 の場合でも、チェックボックスはチェック済みとして表示されます。

編集1

newitemlookup.html.erb は、チェックボックスのあるフォームが存在するビューです。それにいくつかの変更を加え、コントローラーからコードを追加しました。ただし、チェックボックスがオンになっていない場合でも、すべてのチェックボックスがオンになっています。

また、「@newitem.optimize」が返す値を確認したかったのですが、<%= @ を実行すると、データベースの 1 と 0 が「true」と「false」としてビューに表示されることがわかりました。 newsavedmap.optimize %>. これが問題でしょうか?

newitemlookup_controller

    if params[:newitemid]
    @newitem = Newitem.find(:first, :conditions => {:id => params[:newitemid]})

newitemlookup.html.erb

    <% if params[:newitemid] and @newitem.optimize = false %>
    <input type="checkbox" name="optimize" id="optimize">
    <% else %>
    <input type="checkbox" name="optimize" id="optimize" checked="true">
    <% end %>
4

2 に答える 2

0

私はいくつかの調査を行い、レコードを見て結果を返すチェックボックスを追加する方法を見つけました。これが私が使用したコードです。これは if/then ステートメントを置き換えました。

    <%= check_box_tag 'optimize', '1', @newitem.optimize %>
于 2013-08-14T04:23:16.337 に答える
0

たとえば、f のようなフォームビルダーを使用している場合:

 <%= check_box_tag 'optimize', '1', f.object.optimize %>
于 2014-06-09T22:15:47.030 に答える