Rails不渲染部分

时间:2014-03-20 12:03:35

标签: ruby ruby-on-rails-4

我的模型拥有可以创建项目的用户。我试图在我的用户控制器的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>

页面呈现空白而没有部分

2 个答案:

答案 0 :(得分:1)

如果没有更多信息,很难知道问题。但是,从有限的代码判断,你提供了一些让我感兴趣的东西:

  1. 也许current_user正在评估false并且部分未被渲染?
  2. 为什么要在视图中检查current_user?为什么不将操作限制为在控制器级别登录用户?
  3. 也许你的部分期望Project个实例,而且它没有被传递?
  4. 我会看到控制器,部分和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 %>

对我来说看起来更好。