我正在尝试使用CarrierWave通过跟踪此railscast实现上传图片:http://railscasts.com/episodes/253-carrierwave-file-uploads?view=comments,但每当我提交图片时,我的错误消息只是说明没有选择文件,当我明确选择文件时。
我已经多次检查了我的代码,但我无法弄清楚。
这是我的产品/ new.html.erb
<h1> new product </h1>
<% @product = Product.new %>
<% form_for(@product) html => { :multipart => true } do |f| %>
<% if @product.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@product.errors.count, "error") %>
prohibited this post from being saved:</h2>
<% end %>
<% end %>
<ul>
<% @product.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_field :description %>
</div>
<div class="field">
<%= f.file_field :image %>
<div class="field">
<%= f.label :remote_image_url, "or image url" %><br />
<%= f.text_field :remote_image_url %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
以下是我的产品型号:
mount_uploader :image, ImageUploader
我的新产品,创建和展示来自产品控制器的操作:
def new
@product = Product.new(params[:id])
end
def create
@product = Product.new(product_params)
if @product.save
redirect_to @product
else
render :new
end
end
def show
@product = Product.find(params[:id])
end
在产品控制器中定义参数:
private
def product_params
params.require(:product).permit(:title, :description, :image, :remote_image_url)
end
end
这是我能想到的所有相关信息。谢谢你的帮助。
编辑:设置多部分后,我收到此错误
语法错误,意外的tIDENTIFIER,期待keyword_end form_for(@product)html =&gt; {:multipart =&gt; true} do | f | ^ app / views / products / new.html.erb:3:语法错误,意外的keyword_do_block,期待keyword_end
我添加了&lt;%end%&gt;标签,我仍然得到相同。我在上面发布了整个视图文件代码。
答案 0 :(得分:1)
尝试使用以下表单,您的表单看起来很乱,很多结束语句
def new
@product = Product.new
end
<h1> new product </h1>
<%= form_for @product do |f| %>
<% if @product.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@product.errors.count, "error") %>
prohibited this post from being saved:</h2>
<ul>
<% @product.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_field :description %>
</div>
<div class="field">
<%= f.file_field :image %>
</div>
<div class="field">
<%= f.label :remote_image_url, "or image url" %><br />
<%= f.text_field :remote_image_url %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>