Я разрабатываю приложение для рельсов, которое загружает и обрабатывает изображения. Изображения вместе с другой строковой информацией отправляются через файл form_for. Я изучаю эту тему уже около 16 часов, и ни одно решение не сработало. Честно говоря, рельсы даже не читают мой код.
Одна модель процесса имеет много активов, где актив — это просто модель для хранения одного файла изображения. При создании моделей процессов я никогда не могу получить доступ к активу, всегда получая атрибуты невозможного массового назначения: assets_attributes
Completed 500 Internal Server Error in 13ms
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: asset):
app/controllers/process_controller.rb:20:in `new'
app/controllers/process_controller.rb:20:in `create'
- Эта форма используется в new.html.erb
<%= semantic_form_for @processmodel, :url => { :action => 'create' }, :html => { :multipart => true } do |f| %>
<%= f.input :batch, :as => :string, :name => "Batch" %>
<%= f.input :batchset, :as => :string, :name => "Batchset" %>
<%= f.input :numSlots, :as => :number, :name => "Number of slots" %>
<%= f.input :key, :as => :file, :name => "Key" %>
<%= f.semantic_fields_for :asset do |asset| %>
<%= asset.input :asset, :as => :file, :label => "Image" %>
<% end %><br />
<%= f.submit %>
<% end %>
-
class Processmodel < ActiveRecord::Base
attr_accessible :user_id, :batch,
:batchset, :numSlots,
:key,:assets_attributes
attr_accessor :key_file_name
has_many :assets, :dependent => :destroy
belongs_to :user
has_attached_file :key
# :url => Rails.root.join('/assets/readimages/:basename.:extension'),
# :path => Rails.root.join('/assets/readimages/:basename.:extension'),
accepts_nested_attributes_for :assets, :allow_destroy => true
.
.
.
end
-
require 'RMagick'
class Asset < ActiveRecord::Base
attr_accessible :results_string,
:name,
:ambiguous_results,
:image
belongs_to :batch_element
belongs_to :processmodel
has_attached_file :image
validates_attachment_presence :image
end
-
class ProcessController < ApplicationController
def create
@Processmodel = Processmodel.new(params[:processmodel])
@Processmodel.save
all_img = Array.new(@processmodel.assets.all)
respond_to do |format|
if @processmodel.beginRead(...)
redirect_to :action => 'results_main', :controller => 'results'
else
format.html { render action: "new" }
end
end
end
-
def new
@processmodel = Processmodel.new
#5.times{@processmodel.assets.build}
respond_to do |format|
format.html #new.html.erb
end
end
Я прошу идеи о том, как исправить это и заставить мое приложение работать.
new.html.erb
) - person Nick Colgan   schedule 21.06.2012