我正在使用Refinery与Refinery博客。当我尝试在主页上发布帖子时发布错误
未定义的方法`任何?'为零:NilClas
我认为这是因为不同的控制器。
这是我页面的代码
<div class="tab-content">
<div class="tab-pane active" id="posts">
<div class="panel-default">
<div class="overflow-hidden nav nav-pills nav-stacked">
<% if @posts.any? %>
<section id="blog_posts">
<%= render :partial => "/refinery/blog/shared/post", :collection => @posts %>
<%= will_paginate @posts %>
</section>
<% else %>
<p><%= t('.no_blog_articles_yet') %></p>
<% end %>
<% end %>
<% content_for :side_body_prepend do -%>
<%= raw @page.content_for(Refinery::Pages.default_parts.second.to_sym) %>
<% end if Refinery::Pages.default_parts.many? -%>
<%= render '/refinery/blog/shared/body_content_right' %>
<%= render "/refinery/content_page" %>
<% content_for :stylesheets, stylesheet_link_tag('refinery/blog/frontend') %>
</div>
</div>
</div>
这里是主页的控制器,所有其他人都期待博客。(我认为))))
module Refinery
module Blog
class BlogController < ::ApplicationController
include ControllerHelper
helper :'refinery/blog/posts'
before_filter :find_page, :find_all_blog_categories
protected
def find_page
@page = Refinery::Page.find_by(:link_url => Refinery::Blog.page_url)
end
end
end
class PagesController < ::ApplicationController
include Pages::RenderOptions
before_action :find_page, :set_canonical
before_action :error_404, :unless => :current_user_can_view_page?
# Save whole Page after delivery
after_action :write_cache?
# This action is usually accessed with the root path, normally '/'
def home
render_with_templates?
end
# This action can be accessed normally, or as nested pages.
# Assuming a page named "mission" that is a child of "about",
# you can access the pages with the following URLs:
#
# GET /pages/about
# GET /about
#
# GET /pages/mission
# GET /about/mission
#
def show
if should_skip_to_first_child?
redirect_to refinery.url_for(first_live_child.url) and return
elsif page.link_url.present?
redirect_to page.link_url and return
elsif should_redirect_to_friendly_url?
redirect_to refinery.url_for(page.url), :status => 301 and return
end
render_with_templates?
end
protected
def requested_friendly_id
if ::Refinery::Pages.scope_slug_by_parent
# Pick out last path component, or id if present
"#{params[:path]}/#{params[:id]}".split('/').last
else
# Remove leading and trailing slashes in path, but leave internal
# ones for global slug scoping
params[:path].to_s.gsub(%r{\A/+}, '').presence || params[:id]
end
end
def should_skip_to_first_child?
page.skip_to_first_child && first_live_child
end
def should_redirect_to_friendly_url?
requested_friendly_id != page.friendly_id || ::Refinery::Pages.scope_slug_by_parent && params[:path].present? && params[:path].match(page.root.slug).nil?
end
def current_user_can_view_page?
page.live? || current_refinery_user_can_access?("refinery_pages")
end
def current_refinery_user_can_access?(plugin)
refinery_user? && current_refinery_user.authorized_plugins.include?(plugin)
end
def first_live_child
page.children.order('lft ASC').live.first
end
def find_page(fallback_to_404 = true)
@page ||= case action_name
when "home"
Refinery::Page.where(:link_url => '/').first
when "show"
Refinery::Page.find_by_path_or_id(params[:path], params[:id])
end
@page || (error_404 if fallback_to_404)
end
alias_method :page, :find_page
def set_canonical
@canonical = refinery.url_for @page.canonical if @page.present?
end
def write_cache?
if Refinery::Pages.cache_pages_full && !refinery_user?
cache_page(response.body, File.join('', 'refinery', 'cache', 'pages', request.path).to_s)
end
end
end
end
这里是博客控制器
module Refinery
module Blog
class BlogController < ::ApplicationController
include ControllerHelper
helper :'refinery/blog/posts'
before_filter :find_page, :find_all_blog_categories
protected
def find_page
@page = Refinery::Page.find_by(:link_url => Refinery::Blog.page_url)
end
end
end
end
答案 0 :(得分:1)
看起来你因为缺少一些代码行而得到了这个。高于<% content_for :body do %>
<%= raw @page.content_for(Refinery::Pages.default_parts.first.to_sym) if Refinery::Pages.default_parts.any? %>
你应该加上这个:
mousewheel
应该修复你的错误