2013-08-30 2 views
0

У меня есть фотографии формы внутри сообщений/_form.html.hamlСоздание модели с новой родительской модели parent_id

выглядит так:

.row 
    .large-9.large-centered.columns 
    = simple_nested_form_for @post do |f| 
     = f.input :title, label: "Title" 
     = f.input :body, label: "Body", input_html: { rows: 15} 
     /= link_to_add_fields "Add image", f, :photos 
     = f.submit "Mentés", class: "button" 

- if user_signed_in? 
    = simple_form_for @post.photos.new do |f| 
    %h3 
     Image upload 
     %i.fi-upload 
    = f.input :image, input_html: { multiple: true, name: "photo[image]"}, label: false 
    = f.input :post_id, val: @post.id, as: :hidden 

На действия редактирования, все фотографии будут сохранены с правильный post_id. Но при создании действия, когда Post.new создается, у него нет идентификатора раньше, поэтому на фотографиях не появляется post_id.

Как-то это можно исправить? Возможно, удалите эту строку:

= f.input :post_id, val: @post.id, as: :hidden 

и сменить контроллер, чтобы передать идентификатор.

сообщений контроллера создать действие:

def create 
    @post = Post.new(post_params) 

    respond_to do |format| 
     if @post.save 
     format.html { redirect_to @post, notice: 'Post was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @post } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @post.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

ответ

3

Пожалуйста, попробуйте с этим

В новом использовании метода эта линия

@post = Post.new 
    @post.photos.build 

Предположим, если вы хотите новую фотографию в режиме редактирования означает В редактировать метод использовать это

@post.photos.build 

В пост модели вы должны использовать

has_may :photos 
accepts_nested_attributes_for :photos 

В обновлении формы код, как показано ниже

.row 
    .large-9.large-centered.columns 
    = simple_nested_form_for @post do |f| 
     = f.input :title, label: "Title" 
     = f.input :body, label: "Body", input_html: { rows: 15} 
     /= link_to_add_fields "Add image", f, :photos 

     - if user_signed_in? 
     = f.fields_for :photos do |photo| 
      %h3 
      Image upload 
      %i.fi-upload 
      = photo.input :image, input_html: { multiple: true}, label: false 

     = f.submit "Mentés", class: "button" 

Я надеюсь, что это воля помогает.

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