2015-01-31 3 views
0

내 허가 및 게시 양식 값의 매개 변수 중 하나에 대한 값을 선언해야 할 때 문제가 있습니다.강력한 매개 변수의 값을 선언하십시오.

class QuoteController < ApplicationController 
    autocomplete :author, :name, :full => true 
    autocomplete :Category, :title, :full => true 

    def new 
    @quotes = Quote.new 
    end 

    def create 
    @quotes = Quote.new(quotesParams) 
     if @quotes.save 
     redirect_to root_url 
     else 
     redirect_to root_url 
     end 
    end 

    private 
    def quotesParams 
     params.require(:quote).permit(:text,:author_id, :category_id, 
            {:send_type => ["web"]}, 
            {:user_id => [current_user.id]) 
    end 
end 

을하지만 난 데이터베이스에 저장하려고하면 send_typeuser_id

답변

0

컨트롤러에 다음 코드를 사용해보십시오 :

class QuoteController < ApplicationController 
    autocomplete :author, :name, :full => true 
    autocomplete :Category, :title, :full => true 

    def new 
    @quotes = Quote.new 
    end 

    def create 
    @quotes = Quote.new(quotesParams) 
    @quotes.send_type = "web" 
    @quotes.user_id = current_user.id 

    if @quotes.save 
     redirect_to root_url 
    else 
     redirect_to root_url 
    end 
    end 

    private 
    def quotesParams 
    params.require(:quote).permit(:text, :author_id, :category_id) 
    end 
end 
+0

더 간단한 방법입니다 ... thx –

1

강한 매개 변수는 실제 매개 변수 값보다 매개 변수의 구조에 대한 더 널 : 내 코드를 보면. 같은 것들을 그래서 :

{ :send_type => ["web"] } 
{ :user_id => [current_user.id] } 

는 기본 값을 할당하지 않는, 그들은 params에 중첩 된 값의 구조를 지정하고 있습니다.

나는 당신이 두 장소에서 기본값을 처리해야한다고 생각 :

  1. send_type 모델 내부 'web' 기본합니다.
  2. user_id 모델에 의해 요구해야하지만 그 사람에 대한 current_user을 알고 있기 때문에 컨트롤러 (기본 설정해야
  3. 는 컨트롤러에서이 같은

뭔가 :.

def create 
    @quotes = Quote.new(quotesParams) { |q| q.user_id = current_user.id } 
    #... 
end 

def quotesParams 
    params.require(:quote).permit(:text, :author_id, :category_id, :send_type) 
end 

와 모델이 기본 수 컨트롤러가 값을 제공하지 않으면 send_type ~ 'web'

관련 문제