На самом деле я пытаюсь использовать атрибут enum в приложении блога rails 5. Проблема в том, что при попытке переключить статус с черновика на опубликованный или наоборот я получаю сообщение об ошибке «NoMethodError в BlogsController # toggle_status»
blogs_controller.rb
class BlogsController < InheritedResources::Base
def toggle_status
if @blog.draft?
@blog.published!
elsif @blog.published?
@blog.draft!
end
redirect_to blogs_url, notice: "Blog status has been updated"
end
private
def blog_params
params.require(:blog).permit(:title, :body)
end
end
index.html.slim
h1 Listing blogs
table
thead
tr
th Title
th Body
th
th
th
th
tbody
- @blogs.each do |blog|
tr
td = blog.title
td = blog.body
td = link_to blog.status,toggle_status_blog_path(blog)
td = link_to 'Show', blog
td = link_to 'Edit', edit_blog_path(blog)
td = link_to 'Destroy', blog, data: { confirm: 'Are you sure?' }, method: :delete
br
= link_to 'New Blog', new_blog_path
blog.rb
class Blog < ApplicationRecord
enum status: { draft: 0, published: 1 }
end
rout.rb
Rails.application.routes.draw do
resources :blogs do
member do
get :toggle_status
end
end
end
schema.rb
create_table "blogs", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "status", default: 0
end
Я не знаю, где я могу пойти не так, я старался изо всех сил, но не могу понять.
Любые предложенияДобро пожаловать.
Заранее спасибо.