2016-03-03 131 views
0

在我的节目鉴于我有这个div:内部服务器错误AJAX Rails的

<% if @question.answers.any? %> 
    <div class="parent"> 
     <%= render :partial => @question.answers %> 
    </div> 
<% else %> 
    <p class="hideAns">No answers yet. Be the first first to answer!</p> 
<% end %> 

从上面的代码所示,我展示一个段落,如果这个问题没有答案。我面临的问题是检查问题是否再次用ajax解答。

在我create.js.erb文件,我有这个代码块隐藏段落:

$("#answers").append("<%= j render @answer %>"); 
tinyMCE.activeEditor.setContent(''); 
$(".hideAns").css("cssText", "display: none;"); 

在我delete.js.erb文件,(这是我得到的内部。服务器错误)我有这个代码块,检查问题是否有答案,或者没有:

$("#answer_<%= @answer.id %>").remove(); 

<% if @questions.answers.any? %> 
    console.log("has answers"); 
<% else %> 
    $(".hideAns").css("cssText", "display: block;"); 
<% end %> 

为什么不工作?我不允许在.js.erb文件中放置if语句吗?

编辑

服务器日志:

ActionView::Template::Error (undefined method `answers' for nil:NilClass): 
    1: $("#answer_<%= @answer.id %>").remove(); 
    2: 
    3: <% if @question.answers.any? %> 
    4: console.log("has answers"); 
    5: <% else %> 
    6: $(".hideAns").css("cssText", "display: block;"); 
    7: <% end %> 
+0

什么错误? – infused

+0

'删除http:// localhost:3000/questions/36/answers/102 500(内部服务器错误)' – Raymond

+0

您的日志应该显示实际错误以及它发生在 – infused

回答

2

答案是简单地定义在销毁方法的实例变量。

的修复:

def destroy 
    @question = Question.find(params[:question_id]) 
    @answer.destroy 
    respond_to do |format| 
     format.html { redirect_to :back } 
     format.js 
    end 
    end