在轨道4中渲染部分失败

时间:2014-03-21 18:03:48

标签: ruby-on-rails ruby ruby-on-rails-4

这是我试图在用户登录时尝试呈现的部分视图

<div class='row'>

发布项目

<% form_for @project do |f| %>
<%= f.text_field :title, class:'form-control' %>
<%= f.text_area :brief, class: 'form-control' %>
<%= f.submit "Post" %>
<% end %>

在主视图中,当我尝试调用partial时,没有错误,但是部分没有渲染

<div class='col-lg-6'>
    <% if current_user %>
        <% render 'projects/new_project' %>
    <% end %>
</div>

这是我在应用程序控制器中定义的current_user方法。我还将其定义为在视图模板中使用的辅助方法。

private
  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  helper_method :current_user

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您想渲染,您需要使用render输出<%=...的返回值:

<%= render 'projects/new_project' %>

erb标记内的表达式仅在没有等号的情况下进行评估。为了显示表达式的结果,您需要包含等号;将您的代码放在<%=...%>

同样,为你form_for致电:

<%= form_for @project do |f| %>
...
<% end %>

答案 1 :(得分:0)

您需要了解<%=是输出标记

这意味着每次要在非本机Ruby文件(.erb等)中输出内容时,您都必须使用<%=

这与<%相反,后者不输出任何内容,但仍然执行您指定的功能


<强>部分

此外,您需要确保部分语法正确:

#app/views/controller/you_view.html.erb
<%= render partial: "projects/new_project" %>

#app/views/projects/_new_project.html.erb
<%= form_for @project do |f| %>
    <%= f.text_field :title, class:'form-control' %>
    <%= f.text_area :brief, class: 'form-control' %>
    <%= f.submit "Post" %>
<% end %>