页面底部会出现额外的链接?

时间:2014-02-23 07:23:27

标签: ruby-on-rails

我有与问题相关的答案,但在创建新问题后,它应该有0个答案。

在这段代码中

<% @question.answers.each do |ans| %>

    <div class="container">
        <div class="row-fluid">
        </p>

        <p>
            <%= ans.answer %>
        </p>

        <h5><em>
            <%= ans.commenter %> posted 
            <%= link_to "Answer comments", [@question,ans] %>

        </em></h5>

    </div>
</div>
<% end %>

即使在新创建问题之后,视图上也会出现一个没有答案字段的不存在的答案,并且有一个问题/ 1 /答案的链接(显然答案不是有效路径)。有这个原因吗?

2 个答案:

答案 0 :(得分:2)

您在创建我想问的问题后创建一些答案实例。它可能是 question_controller 代码或 models / question.rb 代码。您可以分析代码并在那里找到问题。

简单的解决方法是添加条件

<% if @question.answers.empty? %>
  <p>No answers yet.</p>
<% else %>
  <% @question.answers.each do |ans| %>
  ...
<% end %>

答案 1 :(得分:1)

.build

此问题可能是由每次创建问题时保存answer引起的。

我想你正在做这样的事情:

#app/controllers/questions_controller.rb
def new
    @question = Question.new
    @question.answers.build
end

def create
    @question = Question.new(question_params)
    @question.save
end 

private

def question_params
    params.require(:question).permit(answers_attributes: [])
end

每当你build一个关联对象时,你基本上是在数据库中创建一个与父对象相关联的条目