2013-06-13 2 views
0

Я провел последние три часа, пытаясь найти решение для этого, и проверил все, что мог найти здесь, на StackOverflow, но не пошел.NoMethodError в BlogsController # create

Я специально получаю эту ошибку: "undefined method []»для ноль: NilClass" `

И след приложение дает мне это: app/controllers/blogs_controller.rb:7:in create'`

Я думаю, что это что-то делать с тем, как Я передаю Params, но я не могу понять, что это неправильно Вот мой код контроллера:.

class BlogsController < ApplicationController 
def index 
    @blogs = Blog.all 
end 

def new 
    @blog_entry = Blog.new 
end 

def create 
    Blog.create(title: params[:blogs][:title], content: params[:blogs][:content]) 
    redirect_to action: 'index' 
end 
end 

Вот мой new.html.erb файл:

<%= form_for @blog_entry, as: :post, url: {action: "create"} do |f| %> 
    Title: </br> 
    <%= f.text_field :title %> <br /> 
    Content: <br /> 
    <%= f.text_area :content %> <br /> 
    <%= f.submit "Publish", class: "btn btn-primary" %> <br /> 
<% end %> 

Вот соответствующий файл журнала:

Started POST "/blogs" for 127.0.0.1 at 2013-06-12 21:54:48 -0700 
Processing by BlogsController#create as HTML 
    Parameters: {"utf8"=>"✓",  "authenticity_token"=>"cSGH7PgbbFHSSEPV3pJ2LP6V1GvUN10RHRfUDTUXou4=", "post"=>{"title"=>"first  entry 5", "content"=>"new entry"}, "commit"=>"Publish"} 
    [1m[35m (0.1ms)[0m begin transaction 
    [1m[36mSQL (0.5ms)[0m [1mINSERT INTO "blogs" ("content", "created_at", "title",  "updated_at") VALUES (?, ?, ?, ?)[0m [["content", nil], ["created_at", Thu, 13 Jun 2013  04:54:48 UTC +00:00], ["title", nil], ["updated_at", Thu, 13 Jun 2013 04:54:48 UTC +00:00]] 
    [1m[35m (3.2ms)[0m commit transaction 
Redirected to http://localhost:3000/blogs 
Completed 302 Found in 5ms (ActiveRecord: 3.7ms) 

Надеюсь кто-то есть идея. Пожалуйста?

ответ

1

это должно сделать это:

def create 
    Blog.create(params[:blog]) 
    redirect_to action: 'index' 
end 

дайте мне знать, если это не так. Я попытаюсь пересмотреть свой ответ и вставить, пожалуйста, полную ошибку здесь, если он не работает. Консоль записывает тоже, как вы инициализировать @blog_entry в новой акции вы, возможно, потребуется создать блог с Blog.create(params[:blog_entry])

EDIT

из консоли "post"=>{"title"=>"first entry 5", "content"=>"new entry"}

означает, что вам нужно создать запись в блоге с: Blog.create(params[:post])

+0

Нет, к сожалению, это тоже не работает. Я не получаю никаких ошибок, но он создает запись с нулевыми значениями для полей. –

+0

Я также попытался использовать Blog.create (params {: blog_entry]) с теми же результатами nil. –

+0

консольные журналы, пожалуйста, в тот момент, когда вы нажимаете кнопку отправки – rmagnum2002

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