这是我试图在用户登录时尝试呈现的部分视图
<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
我做错了什么?
答案 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 %>