2012-11-23 26 views
0

这里是我的控制器update_attributes方法是行不通的

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 

而且我的模板

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

当我按一下按钮,每日+活动对象没有被保存。我失去了一些东西

编辑

我试图硬编码这种方式,并保存到数据库中。

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

显然,这个问题必须与update_attributes方法

+0

'PARAMS [:@ dayly_activity]''删除'@ – ck3g

+0

这是唯一的问题吗?我已经删除了@符号,它仍然没有保存。 – Richard77

回答

1

您需要使用params[:dayly_activity](下降@符号)。

而且,我会把这两行:

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

respond_to块外(把它们放在它的上面)。

您也可以删除@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