プロファイルの属性値を送信して変更するチェックボックスがいくつかあります。属性は、:default => true
のブール値として作成されました。このように設定した他のすべてのチェックボックスについては、属性の値はtrue
/false
のいずれかです。ただし、この1つのチェックボックスはtrue
またはnil
です。なぜdefault => trueのチェックボックスは、falseではなく他のオプションとしてnilになるのですか?
同じことを設定しても、どのように可能ですか?値をtrueまたはfalseに変更するだけでフォームが必要です。いいえ。誰か助けてくれますか? 。
class AddAccessItemsToProfiles < ActiveRecord::Migration
def self.up
add_column :profiles, :access_items, :boolean, :default => true
end
def self.down
remove_column :profiles, :access_items, :boolean, :default => nil
end
end
(私は上に行く前に、私はするself.downが:default => nil
で気づくが、私は他のマイグレーションでは機能していることを持ってプラス:ここ
def access_items_settings
if current_user.profile.update_attributes(:access_items => params[:access_items])
redirect_to settings_path
else
redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
end
end
をされて私は提出:
<%= form_tag(access_items_settings_path, :method => :put) do %>
<p class="setting"><%= check_box_tag(:access_items, 1, @user.profile.access_items ? true : false) %>
This lets your items be accessed.
<br><span class="indentClarify">(Some details.)</span></br></p>
<% end %>
(私はspan
、p
、余分なbr
を削除し、それは何もしなかった。)
そして最後のjQuery:これは、データベースのデフォルト値とは何の関係もありません
$(function(){
$(':checkbox').live('click',function() {
$(this).closest('form').submit();
});
});
ありがとうございました。 true/falseのみを許可するように列を設定する方法はありますか? – tvalent2
はい:指定する:null =>列を追加するときはfalseです。既存のカラムを変更するための 'change_column_null'メソッドもあります。私はかなり多くの場合、常にブール値の列を設定しています –
これは非常に役立ちます、もう一度ありがとうございます! – tvalent2