Снова у меня возникают проблемы с form_for.Rails, form_for и paperclip
У меня есть модель деятельности, и это выглядит следующим образом:
class Activity < ActiveRecord::Base
has_many :acdocs, dependent: :destroy, autosave: true
accepts_nested_attributes_for :acdocs,
reject_if: proc { |attributes| attributes['descr'].blank?},
allow_destroy: true
end
И у меня есть модель acdoc. acdoc сокращен для документа о деятельности. o читал где-то, что если бы я использовал слово «документ», у меня могли бы возникнуть проблемы с JavaScript ... тогда лучше всего безопасно, чем жаль.
Поскольку деятельность может иметь много acdocs, я использую form_for для ручки, что:
<%= f.fields_for :acdocs do |acdocs| %>
<div>
<%= acdocs.label :descr" %>
<%= acdocs.text_field :descr %>
<%= acdocs.label :document %>
<%= acdocs.file_field :document b%>
</div>
<% end %>
<p>
<%= f.submit 'add doc', :name => "add_item" %>
</p>
<div class="actions">
<%= f.submit %>
</div>
И для контроллера, я использую это:
def new
@activity = Activity.new
@activity.acdocs.build
end
def create
@activity = Activity.new(activity_params)
if params[:add_item]
@activity.acdocs.build
render :action => 'new'
else
respond_to do |format|
if @activity.save
format.html { redirect_to @activity, notice: 'Activity was successfully created.' }
format.json { render action: 'show', status: :created, location: @activity }
else
format.html { render action: 'new' }
format.json { render json: @activity.errors, status: :unprocessable_entity }
end
end
end
end
def update
if params[:add_item]
unless params[:activity][:acdocs_attributes].blank?
for attribute in params[:activity][:acdocs_attributes].permit!
@activity.acdocs.build(attribute.last.except(:_destroy)) unless attribute.last.has_key?(:id)
end
end
@activity.acdocs.build
render :action => 'edit'
else
respond_to do |format|
if @activity.update(activity_params)
format.html { redirect_to @activity, notice: 'Activity was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @activity.errors, status: :unprocessable_entity }
end
end
end
end
Эта установка, своего рода работа , Если i "add_item" связывает поля и выбирает файлы, все они будут загружены.
Проблема для меня - когда пользователь нажимает add_item или даже редактирует сохраненную активность, форма открывается. С помощью itens, кнопки прикрепленного файла и текста: «no file attach». Я уверен, что этот файл предназначен только для того, чтобы сообщить пользователю, что файл загружается с (с его собственного компьютера), а не файл, хранящийся в приложении ... но это заставит пользователя думать, что файл не был загружен.
Как я могу поместить текст, говорящий, что файл есть, когда он есть?
Кроме того, это не первый раз, когда у меня есть аналогичные проблемы с формой. Иногда я хочу показать что-то, если объект уже находится в базе данных. или если он новый. (например, показать «уничтожить флажок» для существующих элементов, но скрыть для новых)
Как я могу это сделать?
Дело в том, что я внутри формы_for. Итак, у объекта документа, который у меня есть внутри, установите правильный объект. Это помощник form-builder: неопределенный метод 'существует? ' для –
Techmago