2015-09-07 3 views
0

Я пытаюсь создать простое приложение блога с помощью simple_formsimple_form не экономить содержание

В моей new.html.erb за сообщение, я следующий код

<h3>Write your blog post here</h3> 
<%= simple_form_for @post do |f| %> 
    <%= f.input :content %><br> 
    <%= f.submit %> 
<% end %> 

В index.html.erb , я получил

<%= @posts.each do |post| %> 
    <p>Post: <%= post.content %></p> 
<% end %> 

Однако, я получаю следующее на моей странице индекса почт

[#<Post id: 1, created_at: "2015-09-07 23:07:54", updated_at: "2015-09-07 23:07:54", content: nil>, #<Post id: 2, created_at: "2015-09-07 23:07:54", updated_at: "2015-09-07 23:07:54", content: nil>, #<Post id: 3, created_at: "2015-09-07 23:08:11", updated_at: "2015-09-07 23:08:11", content: nil>, 

Вот мой пост Контроллер

def index 
    @posts = Post.all 
    end 

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

    def new 
    @post = Post.new 
    end 

    def create 
    @post = Post.new(params[post_params]) 
     if @post.save 
     success = true 
     message = "Nice!" 
     else 
     success = false 
     message = "Sucks!" 
     end 
     redirect_to root_path 
    end 

    private 

    def post_params 
    params.require(:post).permit(:content) 
    end 
end 

Вот моя модель

class Post < ActiveRecord::Base 
    belongs_to :user 
end 

И, наконец, миграция добавить столбец контента на сообщение

class AddContentToPosts < ActiveRecord::Migration 
    def change 
    add_column :posts, :content, :string 
    end 
end 

После ввода текста в моем Post, я могу создать его. Но я не уверен, что он сохраняется, поскольку контент говорит «nil». Это очень расстраивает, поскольку это кажется очень простой проблемой. После нескольких часов попыток выяснить, что происходит, просить о помощи здесь ... Спасибо!

ответ

1

У вас есть две проблемы:

во-первых, эта линия:

<%= @posts.each do |post| %> 

нуждается в <%, не <%=.

<%= выводит результат выражения. Результатом array.each является массив, и именно это вы видите в браузере.

Во-вторых, ваш доступ params является неправильным. Вы используете

@post = Post.new(params[post_params]) 

Вы используете params[:post], или вы используете post_params, но не то и другое. Вы пытаетесь использовать возвращаемое значение post_params, которое представляет собой Хэш ключей и значений, в качестве ключа для доступа к params. Вам необходимо:

@post = Post.new(params[:post]) 
# or 
@post = Post.new(post_params) 
+0

Когда я удаляю знак «=», данные не отображаются. Теперь он просто отображается как пустой .. –

+0

Спасибо, meagar! Это сработало. –

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