2016-10-26 12 views
0

다음 코드 내 컨트롤러 중 하나입니다 키 중복 : 컨트롤러가 PARAMS 요청에 개발 모드 params[:portfolio][:thumbnail]에서ActionController :: 매개 변수

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

haml, erb 파일을 게시 할 수 있습니까? – dnsh

+0

@Dinesh 님이 질문에 답변을 추가했습니다. –

답변

0

문제는 :as 옵션 형식과 필드 이름으로 사용하는

app 
├── controllers 
├── helpers 
├── mailers 
├── models 
│   ├── portfolio 
│   │   └── portfolio.rb 
│   ├── portfolio.rb 
└── 

form_form 보이는 내 응용 프로그램 구조입니다. :as 옵션이 전달되지 않으면 주석에 표시된대로 model_name_from_record_or_class을 실행합니다. model 디렉토리의 상위 클래스 portfolio.rb은 존재하지 않아야하며 빈 클래스였습니다.

Portfolio 클래스가 이미 정의 되었기 때문에 Portfolio::Portfolio 클래스는 portfolio_portfolio으로 변환되었습니다.