[英]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.