2012-11-23 1 views
0

를 작동하지 않는 것은 여기 update_attributes가

<h1>WEEKLY EXERCICES</h1> 

Day : <%= @dayly_activity.day %> 

<%= form_for(@dayly_activity, :url => { :action => "updatexercises" }) do | f | %> 
<table> 
<tr> 
    <td>Jogging:</td> 
    <td> 
     <% list = (0..20).to_a %> 
     <%= f.select :jog, list %> 
     x 0.1 km 
    </td> 
</tr> 
<tr> 
    <td>Bicycling:</td> 
    <td> 
     <% list = (0..10).to_a %> 
     <%= f.select :bicycl, list %> 
     km 
    </td> 
</tr> 
<tr> 
    <td>Push ups:</td> 
    <td> 
     <% list = (0..20).to_a %> 
     <%= f.select :pushups, list %> 
     x 10 times 
    </td> 
</tr> 
<tr> 
    <td colspan = "2"><%= f.submit %></td> 
</tr> 
    </table> 

<% end %> 

내가 버튼을 클릭

데일리 + 활동 객체가 저장되지 않는 내 컨트롤러

class ActivitiesController < ApplicationController 
    def exercises 
    if current_user.userprofile.present? #chef whether there is a userprofile object 
    @weeknum = current_user.userprofile.week 
    @dayly_activity = Activity.where(:week => 1, :day => 'Monday').first 
    end #end check userprofile  
    end 

def updatexercises 
    respond_to do | format | 
    @dayly_activity = Activity.where(:week => 1, :day => 'Monday').first 
    @dayly_activity.update_attributes(params[:@dayly_activity]) 
    @dayly_activity.save 
    format.html { render action: "exercises" } 
    end 
end 
end 

그리고 내 템플릿입니다. 내가 어떤 일을 놓치고

편집

내가 하드 코딩이 방법을 시도하고는 데이터베이스에 저장.

@dayly_activity.jog = 17 
@dayly_activity.pushups = 13 
@dayly_activity.save 

분명히, 문제는 update_attributes 당신은 params[:dayly_activity]를 사용 (@ 기호를 삭제) 할 필요가

+0

'의 PARAMS [: dayly_activity @]''제거는 @' – ck3g

+0

는 유일한 문제인가요? @ 기호를 제거했습니다. 아직 저장하지 않습니다. – Richard77

답변

1

으로해야합니다. 당신의 respond_to 블록의

@dayly_activity = Activity.where(:week => 1, :day => 'Monday').first 
    @dayly_activity.update_attributes(params[:dayly_activity]) 

외부 (그 위에 넣어) :

또한, 나는이 두 줄을 넣어 것입니다.

@dayly_activity.save update_attributes를 자동으로 삭제하고 작동/실패하면 true/false를 반환 할 수 있습니다.

+0

여전히 저장하지 않습니다. – Richard77

1

당신은 [:@dayly_activity]

에 그리고

@dayly_activity.update_attributes(params[:@dayly_activity]) 
@dayly_activity.save 

save는 쓸모가 그 코드에 오류가 있습니다. update_attributes 레코드를 저장 중입니다.

update_attributes의 결과를 확인하는 것이 좋습니다. 따라서 유효성 검사 오류를 잡을 수 있습니다. 예를 들어

if @dayly_activity.update_attributes(params[:dayly_activity]) 
    redirect_to dayli_activity_path, :notice => "Updated" 
else 
    render :edit 
end 
관련 문제