2012-10-02 8 views
0

컨트롤러에서만 작동하는 메서드를 사용해야하지만 변경하는 특성을 구현할 수 없습니다.업데이트 작업에서 객체 속성을 변경하는 방법은 무엇입니까?

def update 
@website = Website.find(params[:id]) 
respond_to do |format| 
if @website.update_attributes(params[:website]) 
    if params[:website][:language] == "Auto" 
    @website.[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first") 
    end 

    format.html { redirect_to @website, notice: 'website was successfully updated.' } 
    format.js 
    else 
    format.html { render action: "edit" } 
    format.js { render action: "edit" } 
    end 
end 

끝에 내가 잘못 무엇

: 여기

내 업데이트 작업인가?

답변

1
@website.update_attributes(params[:website]) 

은 이미 데이터베이스에 저장을 수행합니다.

@website.[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first") 

은 의미가 없습니다.

@website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first) 

않습니다. request.env 전에 따옴표를 제거하십시오. 변경 사항을 다시 저장해야하므로 업데이트 속성 전에 모든 항목을 이동하고 하나의 저장 호출을 사용하는 것이 좋습니다.

def update 
    @website = Website.find(params[:id]) 
    @website.attributes = params[:website] 

    if params[:website][:language] == "Auto" 
    @website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first) 
    end 

    respond_to do |format| 
    if @website.save 
    format.html { redirect_to @website, notice: 'website was successfully updated.' } 
    format.js 
    else 
    format.html { render action: "edit" } 
    format.js { render action: "edit" } 
    end 
end 

마지막으로, 당신은 다음 코딩 세션으로 진행하기 전에, 잠시 중지하고 루비 구문과 액티브 조금 배우고 할 수 있습니다.

0
def update 
    @website = Website.find(params[:id]) 
    if params[:website][:language] == "Auto" 
    params[:website][:language] = full_language("request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first") 
    respond_to do |format| 
    if @website.update_attributes(params[:website]) 
    format.html { redirect_to @website, notice: 'website was successfully updated.' } 
    format.js 
    else 
    format.html { render action: "edit" } 
    format.js { render action: "edit" } 
    end 
end 

관련 문제