2017-07-09 6 views
1

ハッシュをシリアル化してアプリケーションのデフォルト・チェックリストを作成しようとしています。私は私のビューに私のsetup_checklistハッシュの情報を引き出す方法を知らない。どんな助けもありがとうございます。ここでシリアライズされたハッシュ・レールの表示

は私のユーザモデルが私のview.html.erb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable 

    serialize :checklist, Hash 

    before_create :setup_checklist 

    private 

    def setup_checklist 
    self.checklist = { 
     "Organize Your Finances" => false, 
     "Approval Letter" => false, 
     "Get a Real Estate Agent and look for houses" => false, 
     "Find lawyer" => false, 
     "Get the mortgage" => false, 
     "Apprisal and inspection" => false, 
     "Close the deal" => false 
    } 
    end 
end 

ある

<%= form_for :checklist do |f| %> 
    <%= f.check_box :checklist %> 
<% end %> 

私は似ても似つかないですが、右方向への操舵が大きな

答えて

0

だろう知っていますハッシュからチェックボックスを表示するには、ハッシュを繰り返し、各要素のチェックボックスを作成する必要があります。例えば:

<%= form_for @user do |f| %> 
    <% @user.checklist.each do |key, value| %> 
    <%= f.check_box key %> 
    <% end %> 
<% end %> 
0

はきれいではないかもしれないが、これは私

view.html.erb

<%= form_for @user do |f| %> 
    <%= f.fields_for :checklist do |c| %> 
    <% @user.checklist.each do |todo, completed| %> 
     <%= c.check_box todo %>&nbsp;<%= c.label todo %><br /> 
    <% end %> 
    <% end %> 

    <%= f.submit %> 
<% end %> 

、その後、コントローラ

def update 
    @user = User.find(params[:id]) 
    @user.checklist.each do |todo, completed| 
    @user.checklist[todo] = params[:user][:checklist][todo] == "1" 
    end 
    @user.save 

    redirect_to action: :show, id: params[:id] 
end 
中のために働いているようです

コントローラコードをモデルまたはリファクタのupdate_checklistメソッドに移動することはもちろん可能ですしかし、あなたのために働くが、これはあなたを開始する必要があります。

あなたが強いのparamsを使用する場合は、それぞれの可能なチェックリスト値を許可する必要がありますし、それが「0」または「1」に、それらを設定する代わりに、真または偽の、しかしコントローラが

@user.update(params.required(:user).permit(checklist: ["Organize Your Finances", ...])) 
可能性があります
関連する問題