2016-04-20 2 views
-1

Этот был мой раздел методов контроллера:Rails обновление, прежде чем сохранить модель

class ProductAttachmentsController < ApplicationController 

def create 
    @product_attachment = ProductAttachment.new(product_attachment_params) 
    session[:product_id] --> return product_id 
    respond_to do |format| 
     if @product_attachment.save 

     format.html { redirect_to @product_attachment, notice: 'Product attachment was successfully created.' } 
     # format.json { render :show, status: :created, location: @product_attachment } 
     format.json {render :json => @product_attachment} 
     else 
     format.html { render :new } 
     format.json { render json: @product_attachment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

end 

модель отношений:

class Product < ActiveRecord::Base 
has_many :product_attachments, dependent: :destroy 

end 

class ProductAttachment < ActiveRecord::Base 

    mount_uploader :attachment, AttachmentUploader 
    belongs_to :product 
end 

После того, как пользователь загрузить снимок, product_attachments вставки новой строки в таблице, как теперь могу ли я включить product_id вместе с приложением?

enter image description here

Спасибо !!

EDIT

форма вид:

<section class="photos-section <%= 'hide' unless @show_section == 'photo' %>"> 
    <%= form_for(@product) do |f| %> 
     <div class="row"> 
      <div class="col-xs-12 col-sm-12 col-lg-12"> 
       <hr> 
       <div class="form-group"> 
        <div class="fileUpload btn btn-large btn-upload"> 
         <span><i class="fa fa-upload" aria-hidden="true" id="file_upload"></i> Add Photos</span> 
         <input name="file_attachment" type="file" id="file_upload" class="upload"> 

        </div> 
       </div> 
       <hr> 

      </div> 
     </div> 
     <div class="row attachments-container"> 
     <div class="row"> 
    <div class="col-4 row-space-2 h5 invisible" id="js-first-photo-text"> 
    Your first photo appears in search results! 
    </div> 
</div> 
      <% if [email protected]_record? %> 
       <% @product.product_attachments.each do |attachment| %> 
        <div class="col-xs-6 col-md-4 form-group grayscale"> 
         <img src="<%= attachment.attachment.small.url %>" class="upload-photo-image"> 
         <input type="hidden" name="product_attachment[id][]" value="<%= attachment.id %>"> 
         <button class="delete-photo-btn overlay-btn js-delete-photo-btn delete-attachment" data-toggle="tooltip" data-placement="top" title="Delete" data-photo-id="143275119"> 
          <i class="fa fa-trash-o"></i> 
         </button> 
         <button class="cover-photo-btn cover-overlay-btn js-delete-photo-btn cover-attachment" data-toggle="tooltip" data-placement="top" title="Set as cover photo" data-photo-id="143275119"> 
          <i class="fa fa-picture-o"></i> 
         </button> 
        </div> 
       <% end %> 
      <% end %> 

      <div class="col-xs-6 col-md-4 form-group"> 
       <div class="thumbnail panel photo-item empty-photo-frame" name="empty-photo-frame"> 
        <img src="<%= asset_url('add-image-placeholder.png') %>"> 
       </div> 
      </div> 

     </div> 
     <hr> 
     <div class="row"> 
      <div class="col-xs-12 next-bottom paddingzero"> 
       <div class="col-xs-6"> 
        <% if @product.new_record? %> 
         <a href="#" class="btn-back">Back</a> 
        <% else %> 
         <a href="/products/<%= @product.id %>/edit_location" class="btn-back">Back</a> 
        <% end %> 
       </div> 
       <div class="col-xs-6"> 
        <% if @product.new_record? %> 
         <a href="" class="btn btn-next pull-right">See Next</a> 
         <a href="/products/<%= @product.id %>/edit_price" class="btn btn-next pull-right">See Next</a> 
        <% else %> 
         <input type="hidden" name="step-param" value="photo"> 
         <%= f.submit 'See Next', :class => 'btn btn-next pull-right photo-submit' %> 
        <% end %> 
       </div> 
      </div> 
     </div> 
    <% end %> 
</section> 
+0

вы можете включить форму для создания вложений? вы можете это сделать, если используете ** fields_for ** и добавьте ** accepts_nested_attributes_for ** в свою модель продукта. Вы также можете посмотреть http://railscasts.com/episodes/196-nested-model-form-part-1?view=asciicast –

+0

@JeffreyMCastro, проверить форму просмотра в редакции. – d3bug3r

+0

Для части add_photos вы действительно можете использовать f.fields_for и accepts_nested_attributes_for в модели продукта и не забываете обновлять разрешенные параметры в контроллере продуктов. Проверьте ссылку railscast, которую я вам дал, это вам очень помогает :) –

ответ

1

Вы можете проверить product_attachment_params Я думаю, что мы не имеем product_id поля в этом параметре, потому что я не вижу product_id поля в форме. Также вы можете с помощью

@product.product_attachments.build(product_attachment_params) 
0

Выполните следующие действия в контроллере:

class ProductAttachmentsController < ApplicationController 

def create 
    product_id = session[:product_id] 
    # Look for the product by product_id and create your attachment from there. 
    @product_attachment = Product.find(product_id).build(product_attachment_params) 

    respond_to do |format| 
     if @product_attachment.save 
     format.html { redirect_to @product_attachment, notice: 'Product attachment was successfully created.' } 
     # format.json { render :show, status: :created, location: @product_attachment } 
     format.json {render :json => @product_attachment} 
     else 
     format.html { render :new } 
     format.json { render json: @product_attachment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

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