ActionController ::参数重复键

时间:2016-10-26 19:12:59

标签: ruby-on-rails

以下代码段来自我的一个控制器:

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 %>

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

问题在于我的应用程序结构

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