Ruby on rails 无法从控制器渲染局部对象

Ruby on rails 无法从控制器渲染局部对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在写一种博客,如果条件为真,我想从我的控制器中渲染一部分 这是我的控制器方法: def comments_session render partial: 'comments/form' if signed_in? render partial: 'comments/show' end 这是我的观点: <%= comments_session %> 以下是我的部分: _show.html.erb <% @post.comme

我正在写一种博客,如果条件为真,我想从我的控制器中渲染一部分

这是我的控制器方法:

    def comments_session
        render partial: 'comments/form' if signed_in?
        render partial: 'comments/show'
    end
这是我的观点:

<%= comments_session %>
以下是我的部分:

_show.html.erb

<% @post.comments.sort_by(&:created_at).reverse.each do |comment| %>
<div class="col-lg-12 mt-3 pt-3 border-top">
  <% if signed_in? %>
    <% if current_user.username == comment.user.username %>
      <%= link_to 'Excluir', post_comment_path(@post, comment), :class =>"btn btn-sm btn-danger btn_round float-right border-dark", 
      method: :delete, data: {confirm: "Deseja realmente excluir esse comentário?"} %>
    <% else %>
    <% end %>
  <% else %>
  <% end %>
  <h6><strong>~ <%= comment.user.username %></strong></h6>
  <p class="comment"><%= comment.body %></p>
  <p class="lead distance_of_time"><small>
    <%= time_ago_in_words(comment.created_at) %>
  </small></p>
</div>
<% end %>
和_form.html.erb

<%= form_with(model: @comment, url: [@post, @comment], local: true) do |f| %>
  <% if @comment.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(comment.errors.count, "error") %> prohibited this comment from being saved:</h2>

      <ul>
      <% comment.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="row">
    <div class="col-lg-10 form-group">
      <%= f.text_area :body, :class =>"form-control", :placeholder =>"Escreva o Que Quiser!" %>
    </div>

    <div class="col-lg-1 form-group">
      <%= f.submit "Comentar", :class =>"btn btn-lg btn-primary border-dark text-light" %>
    </div>
  </div>
<% end %>
该方法完美地呈现了_show.html.erb,但对另一个却没有这样做。。。 我试图更改并删除该条件,但无效:/

拜托,我想知道为什么我不能渲染它 谢谢

你能这样试试吗

def comments_session
  return render partial: 'comments/form' if signed_in?
  render partial: 'comments/show'
end

我认为您得到的是DoubleRenderError或类似的东西,Rails不允许在控制器中渲染多个部分

def comments_session
  if signed_in?
    render partial: 'comments/form'
  else
    render partial: 'comments/show'
  end
end

发生这种情况是因为如果不返回,它会找到两个渲染,这是一个问题,它至少是不明确的