2016-03-07 2 views
-2

Вот фрагмент из формы, которую у меня есть. Назначение: title и: description работает отлично при создании модели «Post», однако, когда я пытаюсь назначить category_id как 1, он ничего не присваивает, category_id остается равным нулю.Как присвоить значение модели в Simple_Forms (Ruby on Rails)?

.form-group 
     = f.input :title, input_html: { class: 'form-control' } 

.form-group 
     = f.input :description, input_html: { class: 'form-control' } 

.form-group 
     = f.input :category_id, input_html: { class: 'form-control' } 

При использовании Post.find_by (название: 'Pošty' (название я дал на этот пост)) я получаю ...

=> #<Post id: 13, title: "posty", description: "eyyyyyy", created_at: "2016-03-07 17:45:05", updated_at: "2016-03-07 17:45:05", category_id: nil> 

Обратите внимание, как category_id: ноль? Он должен равняться числу, которое было присвоено в формах, но оно не работает.

Вот фрагмент от Schema.rb. Он содержит 2 модели, категории и должности, сообщения относятся к категории.

create_table "categories", force: :cascade do |t| 
    t.string "name" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "posts", force: :cascade do |t| 
    t.string "title" 
    t.text  "description" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.integer "category_id" 
    end 

    add_index "posts", ["category_id"], name: "index_posts_on_category_id" 

Вот мой posts_controller код

class PostsController < ApplicationController 
    before_action :find_post, only: [:show, :edit, :update, :destroy] 

    def index 
     @posts = Post.all.order("created_at DESC") 
    end 

    def show 
    end 

    def new 
     @post = Post.new 
    end 

    def create 
     @post = Post.new(post_params) 

     if @post.save 
      redirect_to @post, notice: "Successfully created" 
     else 
      render 'new' 
     end 
    end 

    def edit 
    end 

    def update 
     if @post.update(post_params) 
      redirect_to @post, notice: "Post was successfully updated" 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     @post.destroy 
     redirect_to root_path 
    end 

    private 

    def post_params 
     params.require(:post).permit(:title, :description) 
    end 

    def find_post 
     @post = Post.find(params[:id]) 
    end 

end 
+1

Добавьте свой код 'posts_controller.rb'. – jljohnstone

+0

Извините, я забыл. Я по-прежнему новичок в этом. –

+0

Получил это, я исправил его. Спасибо за напоминание. –

ответ

0

В posts_controller.rb, изменение:

def post_params 
    params.require(:post).permit(:title, :description) 
end 

к:

def post_params 
    params.require(:post).permit(:title, :description, :category_id) 
end 
+0

Эй, спасибо. Я понял это после того, как кто-то напомнил мне о post_controller, затем я отредактировал свой ответ, чтобы не расстроить других людей, пытающихся ответить на вопрос. Еще раз спасибо. –

Смежные вопросы