繁体   English   中英

在Rails 4中渲染部分零件失败

[英]Rendering partials failing in 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 %>

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

<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

我究竟做错了什么?

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

<%= render 'projects/new_project' %>

erb标记中的表达式仅在没有等号的情况下被求值。 为了显示表达式的结果,您需要包括等号; 将您的代码放入<%=...%>

同样,对于form_for调用:

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

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

这意味着每次您要在非本地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 %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM