我的模型拥有可以创建项目的用户。我试图在我的用户控制器的show动作中渲染部分内容。
<% if current_user %>
<%= render(:partial => "projects/new_project") %>
<% end %>
这是show方法的代码
def show
@user = User.find(params[:id])
@project = Project.new
@characters = Character.sorted
@personalities = Personality.sorted
@industries = Industry.sorted
@project_types = ProjectType.sorted
end
这是我的帮助方法current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
这是局部视图_new_projects
<div class="row">
<div class= "col-lg-5 col-md-5 col-xs-5">
<% form_for @project do |f| %>
<%= f.text_field(:title, placeholder: "Give your project a name", :class => 'form-control') %>
<%= f.select(:project_type_id, @project_types.map {|n| [n.project_type_name, n.id]}, {}, :class => 'form-control') %>
<%= f.select(:industry_id, @industries.map {|n| [n.industry_name, n.id]},{}, :class => 'form-control') %>
<%= f.select(:character_id, @characters.map {|n| [n.character_name, n.id]},{}, :class => 'form-control') %>
<%= f.select(:personality_id, @personalities.map {|n| [n.personality_name, n.id]},{}, :class => 'form-control') %>
<%= f.text_area(:description, :class => 'form-control') %>
<div class='padding-top'></div>
<%= submit_tag("Post project", :class => 'btn btn-success btn-sm sniglet') %>
<% end %>
</div>
</div>
页面呈现空白而没有部分
答案 0 :(得分:1)
如果没有更多信息,很难知道问题。但是,从有限的代码判断,你提供了一些让我感兴趣的东西:
current_user
正在评估false
并且部分未被渲染?current_user
?为什么不将操作限制为在控制器级别登录用户?Project
个实例,而且它没有被传递?我会看到控制器,部分和current_user
代码。
答案 1 :(得分:1)
您只需要为current_user值添加临时日志:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
Rails.logger.info("!!!#{@current_user}")
end
你会看到你的问题。如果在模板中,这里还有一个小小的提示:
<%= render(:partial => "projects/new_project") if current_user %>
对我来说看起来更好。