0

在类别视图中,我有:

<ul>
  <% @category.subcategories.each do |subcategory| %>
    <li>
      <h6>
        <%if subcategory.has_topic_headings? %>
          <%= link_to subcategory.name, { controller: 'subcategories', 
                                          action: 'show_topic_headings',
                                          category_id: subcategory.category_id,
                                          id: subcategory.id 
                                        }, data: 'topic_heading_link', 
                                        remote: true %>
        <% else %>
          <%= link_to subcategory.name, subcategory %>
        <% end %>  
      </h6>
      <hr>
    </li>
  <% end %> 
</ul>            

在 application.js 中:

/* slides in the subcategory menu or the content */
$('.category-menu a').on(
'click',
function(e) {
  if ($(this).attr('data')) {
    /* make submenu visible */
    $('.stretched.nav.row > .slider').animate({left:'-62.5em'});
    e.preventDefault();
  }
  else {
    /* make content visible */
    $('.stretched.main.row > .slider').animate({left:'-62.5em'});
    e.preventDefault();
  }
}
);

在 subcategories_controller.rb 中

  def show_topic_headings
    respond_to :js
    @subcategory = Subcategory.find(params[:id])
  end

在 subcategories/show_topic_heading 我有:

$('.subcategory-menu').html( "<%= escape_javascript( render( partial: "layouts/topic_headings", locals: { subcategory: @subcategory} ) ) %>" );

单击活动链接, .subcategory-menu 应填充正确的内容,并且包含的​​ div 应滑入。但内容仅在静态时出现(例如,如果我放置一个字符串而不是对 @subcategory 的引用) . 请注意,我在其中插入子类别部分的视图是类别视图。

4

1 回答 1

1

问题出在 subcategories_controller 中:

respond_to,而不是函数本身,生成部分。因此需要在调用 response_to 之前声明实例变量

def show_topic_headings
  @subcategory = Subcategory.find(params[:id])
  respond_to :js
end
于 2013-09-03T15:30:48.410 回答