【问题标题】:Extra links popping up at bottom of page?页面底部弹出额外链接?
【发布时间】:2014-03-24 19:04:31
【问题描述】:

我有与问题相关的答案,但在创建一个新问题后,它应该有 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 %>

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

【问题讨论】:

  • 看起来问题更有可能在控制器中找到。您也可以发布该代码吗?

标签: ruby-on-rails


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    .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 关联对象时,您基本上是在数据库中创建一个条目,该条目将关联到父对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多