以下代码段来自我的一个控制器:
Class Admin::Portfolios::PortfoliosController < Comfy::Admin::Cms::BaseControllers
def create
uploader = PortfolioUploader.new
uploader.store!(params[:portfolio][:thumbnail])
@portfolio.save!
flash[:notice] = 'Portfolio item saved!'
redirect_to :action => :index
rescue ActiveRecord::RecordInvalid
flash.now[:error] = 'Error saving portfolio item'
render :action => :new
end
在开发模式中,params[:portfolio][:thumbnail]
在控制器请求参数中设置。但是,在生产模式中,设置了params[:portfolio_portfolio][:thumbnail]
。
我正在使用form_for(@portfolio)
,在开发过程中,生产模式中的所有表单字段名称都是portfolio[name]
和portfolio_portfolio[name]
。见下面的erb。
<%= form_for @portfolio, :url => {:action => :create}, :html => {:multipart => true} do |form| %>
<% render :partial => form %>
<% end %>
有人可以解释为什么会这样吗?
答案 0 :(得分:0)
问题在于我的应用程序结构
app
├── controllers
├── helpers
├── mailers
├── models
│ ├── portfolio
│ │ └── portfolio.rb
│ ├── portfolio.rb
└──
form_form
查找:as
选项以用作表单和字段名称。如果没有传递:as
选项,它将执行model_name_from_record_or_class
,执行它在锡上所说的内容。 1}}模型目录中较高的类不应该存在,而且是一个空类。
由于已定义portfolio.rb
类,因此类Portfolio
已转换为Portfolio::Portfolio
。