2014-09-18 2 views
0

Когда я отправляю форму ниже, «опубликованное» значение check_box не публикуется.Почему значение check_box не отправляется на db

params3 = { "utf8" => "✓", "authenticity_token" => "i4SbblLJKIwba9yD30sDQCsir28/xdUxQZ90qYTNn0A =", "история" => { "имя" => "asdsaddsad", "пост" => «asdasdasdasd», «user_id» => «13», «image_id» => «1», «published» => «1»}, «commit» => «Save Story», «action» = > «создать», «контроллер» => «истории»}

def create 
    @story = Story.new(story_params) 

    respond_to do |format| 
     if @story.save 
     format.html { redirect_to @story, notice: 'Story was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @story } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @story.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

<%= form_for @story do |f| %> 
     <%= f.text_field :name, placeholder: "Enter Title" %> 
     <%= f.text_area :post, placeholder: "Enter Story" %> 
     <br/> 
     <%= f.hidden_field :user_id, value: current_user.id %> 
     <%= f.hidden_field :image_id, value: @image.id %> 
     <%= f.label "Publish this" %> 
     <%= f.check_box :published %> 
     <%= f.submit "Save Story" %> 
    <% end %> 
+0

показать вашу форму и тип данных «опубликовано»? –

+0

извините, забудьте обернуть его в фигурные скобки – isea

ответ

1

данные, которые передается к действию является story, как показано на params3 хэш. Также размещается флажок published. По умолчанию флажки передают 1 или 0 для обозначения true/false. Rails будет обновлять значение соответственно и принимать 1 или 0 для значения флажка:

params3 = {"utf8"=>"✓", "authenticity_token"=>"i4SbblLJKIwba9yD30sDQCsir28/xdUxQZ90qYTNn0A=", "**story**"=>{"name"=>"asdsaddsad", "post"=>"asdasdasdasd", "user_id"=>"13", "image_id"=>"1", "published"=>"1"}, "commit"=>"Save Story", "action"=>"create", "controller"=>"stories"} 

Поэтому ваше созданию объекта нужно будет использовать этот Params. Поскольку вы используете Rails 4, вам нужно будет использовать strong_parameters, который кажется, что вы есть. Вам нужно будет убедиться, что published является допустимым значением в хэше вашего параметра.

def story_params 
    params.require(:story).permit(...., :published, ...) 
end 
Смежные вопросы