2013-12-16 4 views
1

Так что я сейчас следую учебнику Hartl, но я хотел сделать так, чтобы пользователь мог просто сделать сообщение, это сообщение будет принадлежать ему и показать его простым способом на например, отдельную страницу. Ничего подобного.Попытка получить пользовательские сообщения для работы

def create 
     @post = current_user.posts.build(post_params) 
    if @post.save 
     flash[:success] = "Post created!" 
     redirect_to root_url 
    else 
     render 'posts/index' 
    end 
    end 

Теперь у меня это в моем post_controller. У меня есть форма сообщений на @post при их отправке. Но я не получаю сообщение со вспышкой, что означает, что сообщение не было сохранено, даже когда я нажал кнопку submit. Почему это прежде всего, и, во-вторых, я действительно не получаю строку кода: @post = current_user.posts.build(post_params). Какую именно конструкцию нужно делать точно? Я не должен просто делать Post.new(post_params)? И немного изменить его, чтобы сообщение также принадлежало пользователю?

Я сделал суть моего пользователя и после модели: https://gist.github.com/Veske/7988593

журнала сервера:

Started POST "/posts/index" for 127.0.0.1 at 2013-12-16 17:19:52 +0200 
Processing by PostsController#index as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"iT08NreZv83WtImK6V9/jXZOpgtzwSLjlxB7T/wn0E4=", "text"=>"This is a s 
post!", "commit"=>"Submit!"} 
    Rendered posts/index.html.erb within layouts/application (1.0ms) 
    User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '390d667f7603eee5976fd8500a9a8776c 
d3' LIMIT 1 
    Rendered layouts/_menu.html.erb (4.0ms) 
    Rendered layouts/_footer.html.erb (0.0ms) 
Completed 200 OK in 21ms (Views: 19.0ms | ActiveRecord: 1.0ms) 

Это моя форма

<%= form_tag(@post) do %> 
    <div class="forms"> 
    <%= text_area_tag(:content, nil, placeholder: "Type text in here...")%> 
    <%= submit_tag 'Submit!' %> 
    </div> 
<% end %> 
+0

сборки correct..it создал новый micropost для текущего пользователя. Пожалуйста, разместите свою модель пользователя и модель публикации ... убедитесь, что user_id: integer - столбец в вашей таблице microposts db. –

+0

Если вы отправили свой след, то есть, если есть ошибки, было бы проще определить проблему. Просто чтобы подтвердить, ваши модели 'user' и' post' связаны с 'user has_many posts' и' post own_to user'? – vee

+0

Да, я сделал суть и отредактировал оригинальный пост, все модели есть. – Veske

ответ

2

Вот ваш ответ. Я сделал суть https://gist.github.com/licatajustin/7989891

В следующий раз вы можете легко проверить, проверив свою командную строку.

В консоли введите

rails c 

> u = User.first 
> u.posts.create(content: "My first post") 

и посмотреть, если это работает

+0

=> # <Идентификатор отправления: ниль, содержание: «Второе сообщение», user_id: 4, created_at: nil, updated_at: nil> irb (main): 005: 0> – Veske

+0

Поэтому он создает его через CLI, но не в мое приложение. – Veske

+0

Кажется, что это работает Но почему сборка не работает? – Veske

1

Вы посылаете текст = «Это как сообщение! " Но ваша модель предполагает, что требуется атрибут «контент» (не «текст»)

Поэтому @ post.save не работает, и вы попадаете в неудачный оператор. Я бы предложил вам посмотреть на форму, которая создает этот пост, поскольку он, похоже, не создает правильные атрибуты.

+0

Хорошо, я позабочусь об этом. – Veske

+0

Обновляется исходное сообщение с моей формой. Сначала я попытался использовать form_tag (posts_create_path), но по какой-то причине это не сработало. – Veske

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