![](/img/trans.png)
[英]Grabbing the key from the ActionController::Parameters in Ruby on Rails
[英]ActionController::Parameters duplicated key
以下代碼片段來自我的一個控制器:
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)
並且在開發中,所有表單字段名稱在生產模式下均為form_for(@portfolio)
portfolio[name]
和form_for(@portfolio)
portfolio_portfolio[name]
。 請參閱下面的erb。
<%= form_for @portfolio, :url => {:action => :create}, :html => {:multipart => true} do |form| %>
<% render :partial => form %>
<% end %>
誰能解釋為什么會這樣?
問題在於我的應用程序結構
app
├── controllers
├── helpers
├── mailers
├── models
│ ├── portfolio
│ │ └── portfolio.rb
│ ├── portfolio.rb
└──
form_form
查找:as
選項以用作表單和字段名稱。 如果沒有通過:as
選項,它將執行model_name_from_record_or_class
,它會按照提示說。 模型目錄中較高位置的portfolio.rb
類應該不存在,並且為空類。
由於Portfolio
類是已經定義的類Portfolio::Portfolio
,轉化portfolio_portfolio
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.