在分类视图中,我有:
<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
在子类别/ show_topic_heading中我有:
$('.subcategory-menu').html( "<%= escape_javascript( render( partial: "layouts/topic_headings", locals: { subcategory: @subcategory} ) ) %>" );
单击活动链接,.subcategory-menu应填充正确的内容,并且div应包含滑入。但内容仅在静态时出现(例如,如果我放置字符串而不是引用@subcategory)。请注意,我在其中插入子类别partial的视图是类别视图。
答案 0 :(得分:1)
问题在于subcategories_controller:
respond_to,而不是函数本身,生成部分。因此,需要在调用respond_to
之前声明实例变量def show_topic_headings
@subcategory = Subcategory.find(params[:id])
respond_to :js
end