【问题标题】:Rails not rendering partialsRails 不渲染局部
【发布时间】:2014-03-20 12:03:35
【问题描述】:

我的模型有可以创建项目的用户。我正在尝试在我的用户控制器的显示操作中呈现部分内容。

<% 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>

页面呈现空白,没有部分

【问题讨论】:

  • 您确定session[:user_id] 已设置吗?
  • 你能分享projects/new_project的部分吗?另外,您确定在尝试此代码时设置了 current_user 吗?
  • @Kirti 请查看编辑。
  • @Clockwork 让我们在聊天中讨论这个问题chat.stackoverflow.com/rooms/48530/ror

标签: ruby ruby-on-rails-4


【解决方案1】:

您只需为 current_user 值添加临时日志:

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
  Rails.logger.info("!!!#{@current_user}")
end

你会看到你的问题。这里还有一个关于 if in template 的小提示:

<%= render(:partial => "projects/new_project") if current_user %>

在我看来读起来更好。

【讨论】:

    【解决方案2】:

    如果没有更多信息,很难知道问题所在。但是,从您提供的有限代码来看,有几件事引起了我的兴趣:

    1. 也许current_user 正在评估为false 并且部分未呈现?
    2. 为什么current_user 签入视图?为什么不将操作限制为控制器级别的已登录用户?
    3. 也许您的部分需要一个 Project 实例,但它没有被传递?

    如果我能看到控制器、部分和 current_user 代码,我会很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-16
      • 2016-11-12
      • 2018-04-17
      • 1970-01-01
      • 2011-09-19
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多