【问题标题】:Error after attempting to link_to partials尝试链接到部分后出错
【发布时间】:2011-08-25 20:16:38
【问题描述】:

使用此previous question 作为指导,我尝试在容器上方创建一个ul 导航标头,单击该标头会在容器内呈现部分内容。 (希望这有一定的意义,但它可能并不重要。)在单击部分链接之前,我让它默认呈现部分。

但是,当我点击我的link_to 以希望渲染部分内容时,我收到以下错误:

uninitialized constant ProfileController

我正在使用 Rails 3。这是我的相关代码:

ProfilesController:

def show_about
  @is_on_show_about = true
end

def show_info
  @is_on_show_info = true
end

views/profiles/show.html.erb:

<div id="info">
  <div id="infoContainer">
    <% if @is_on_show_about %>
      <%= render :partial => 'show_about' %>
    <% elsif @is_on_show_info %>
      <%= render :partial => 'show_info' %>
    <% end %>
    <ul id="info">
      <li>
        <%= link_to 'About', show_about_path, :remote => true %>
      </li>
    </ul>
    <ul id="settingsLinks">
      <li><a href="#">Advice</a></li>
      <li>
        <%= link_to 'Info', show_info_path, :remote => true %>
      </li>
    </ul>
  </div>
  <%= render :partial => 'show_about' %>

Routes.rb:

map.show_info 'profiles/:id/info', :controller => 'profile', :action => 'show_info'
map.show_about 'profiles/:id/about', :controller => 'profile', :action => 'show_about'

谁能帮我解决这个问题并解释出了什么问题?

【问题讨论】:

  • 您的配置文件控制器实际上是否称为ProfileController,位于“app/controllers/profile_controller.rb”中?
  • 不,抱歉,这是一个错字。它是 ProfilesController,位于“app/controllers/profiles_controller.rb”中。我会在上面解决这个问题。

标签: ruby-on-rails-3 partial-views uninitialized-constant


【解决方案1】:

你的两条路线都不正确。

如果你的控制器确实被命名为ProfilesController(复数),那么你的路由应该使用:controller =&gt; 'profiles',而不是:controller =&gt; 'profile'

【讨论】:

  • 啊。谢谢!但是,现在我收到一个新错误:Missing template profiles/show_about with {:locale=&gt;[:en, :en], :formats=&gt;[:html], :handlers=&gt;[:erb, :rjs, :rhtml, :rxml, :builder]} in view paths "/Users/me/Desktop/myapp/app/views", "/Users/me/Desktop/myapp/vendor/plugins/paperclip/app/views"
  • 显然您没有名为profiles/show_about 的文件。你到底想在这里做什么?您不需要路由/动作来渲染部分,这不是部分。您是否尝试同时使用这两种操作来呈现 show 模板?如果是这样,您必须显式调用render 'show',因为模板与操作名称不匹配。我真的不知道您要完成什么,但是您的 render :partial 行和您的控制器操作在当前形式下没有意义。
  • 查看您链接的问题,我可以看到问题 - 您正在复制他完全向后损坏的代码。无论你想做什么,都不要把这个问题作为参考。
  • 我想做的是根据点击的链接呈现配置文件数据。所以我有两种类型的数据:“关于”和“信息”。我只想根据我点击的链接加载这些数据。目标是让它像“标签”一样,但使用部分来存储实际数据。
  • 然后在每个动作的末尾添加render 'show'。您最好将共享代码放入部分代码中,然后从show_info.html.erbshow_about.html.erb 模板中呈现它。部分的全部意义在于可重用的东西进入它们,而不是只在一个地方使用的东西。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多