0

これが私のコントローラーです

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

ボタンをクリックしても、Daily+activityオブジェクトが保存されていません。私は何かが欠けていますか

編集

私はこの方法でハードコーディングを試み、データベースに保存しました。

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

明らかに、問題はupdate_attributesにあるはずです

4

2 に答える 2

1

使用する必要がありますparams[:dayly_activity](@記号をドロップします)。

また、私はこれらの2行を置きます:

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

ブロックの外側respond_to(ブロックの上に置きます)。

、update_attributesを削除することもでき@dayly_activity.saveます。これは自動的に実行され、機能/失敗した場合はtrue/falseを返します。

于 2012-11-23T21:35:30.323 に答える
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
于 2012-11-23T21:37:26.257 に答える