【发布时间】:2013-03-23 07:21:17
【问题描述】:
我有一个名为 assignment 的模型,它表示用户和多项选择测验应用中的问题之间的丰富连接。当用户回答问题时,响应会记录在 assignments 控制器中的以下更新方法中
定义编辑 @assignment = Assignment.find_by_id(params[:id]) @user = @assignment.user @question = @assignment.question 提出“用户#{@user}问题#{@question}作业#{@assignment}” 结尾 定义更新 @assignment = 赋值.find(params[:id]) @user = @assignment.user @assignment.update_attributes(:response => params[:assignment][:response]) 如果@assignment.save flash[:notice] = "您的回复已保存" redirect_to(:action => 'show', :id => @assignment.id , :user_id => @user.id) 别的 放@assignment.save 提出“无法保存” 渲染(user_assignment_path(@user, @assignment) , :html => {:method => :get}) 结尾 结尾我有一个被调用的保存前调用等级。这是模型:
类分配 ActiveRecord::Base 属于_to:用户 属于_to:问题 attr_accessible :title, :body, :user_id, :question_id , :response before_save :等级 默认等级 self.correct = (response == self.question.solution) 除非 response == nil 结尾 结尾所以当我第一次提交回复时,保存效果很好,它会相应地重定向我。之后,如果我再次尝试编辑问题并重新提交表单,则保存失败。
谁能想到可能发生这种情况的原因?
另外我知道第二次重定向有错误,所以如果有人能纠正我的用法,那将是一个额外的帮助
EDIT 这是Edit erb,以防有人发现这里有问题。我还在上面的控制器中添加了edit方法。
您可以在下方编辑用户的回复或更改问题以覆盖问题是否标记为正确。
user_assignment_path(params[:user_id] , params[:id]) , :html => {:method => "put"}, :user_id => params[:user_id] ) 做 |f|%>
编辑2我刚刚在rails控制台中手动完成了这些步骤,没有任何问题,所以一定有什么奇怪的事情发生了。
【问题讨论】:
-
请发表您的错误。
-
我认为从控制器调用grade实例方法而不是添加回调是一个很好的做法,这意味着它只会在保存时调用控制器中的方法,这将当回调堆栈和加载时间增加时,为您省去一些麻烦。
-
@Jesper 嘿,我没有收到任何错误。这是奇怪的事情。分配只是无法保存并遵循 else 逻辑。我尝试将错误打印到控制台,但没有任何结果。
标签: ruby-on-rails