我成立了一個story
模型由回形針處理的image
附件後的「新」行動,看起來像文件路徑:回形針(3.0)和Rails(3.2):f.file_field失去一個驗證錯誤
class Story < ActiveRecord::Base
has_attached_file :image # [...]
attr_accessible :user_id, :title, :image, :image_file_name
belongs_to: user
validates_presence_of :user_id
validates :title, :length => { :maximum => 50 }
validates_attachment_size :image, :less_than => 2.megabytes, :unless => Proc.new { |story| story[:image].nil? }
# [...]
end
當我填寫我的故事的形式,看起來像:
<%= form_for @story, html: { multipart: true } do |f| %>
<% if @story.errors.any? %>
<div id="error-explanation">
<ul>
<% @story.errors.full_messages.each do |msg| %>
<li class="error-mess">Error: <%= msg.downcase %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.text_field :title %></td>
<%= f.file_field :image %>
<%= f.submit t('.send') %>
<% end %>
如果驗證了story.title過長形式沿着正確與正確的錯誤消息和無效TITL重新顯示失敗e已經填寫,,但file_field
現在是空白的,我必須再次點擊它才能重新選擇我想上傳的文件。
這裏是我的stories_controller.rb的樣子:
def create
@story = @current_user.stories.new(params[:story])
if @story.save
redirect_to thanks_path
else
# [email protected] so I render action 'new' again just to
# bang my head against this 'anomaly'
render action: "new"
end
end
我怎樣才能避免重新選擇文件驗證錯誤後上傳用戶?
我面臨同樣的問題,你有沒有找到一個解決辦法?謝謝! – yorch
只有一個圖形:選擇圖片時,我通過jQuery提供UI反饋。假設我的圖像字段是由'<%= f.file_field:image%>生成的,我可以使用下面的jQuery來觸發它:'$(「#story_image」)。change(function(){$(「#image_selected 「).show(300);});'然後在我看來,我有一個隱藏的div」image_selected「,其中包含一個雄辯的gif ...如果您發現_real_解決方案,請告訴我! – Darme