在按钮单击时渲染部分

时间:2017-08-25 03:13:27

标签: ruby-on-rails

我在单击按钮时渲染粒子时遇到问题。我收到了错误

  

HelpController#FAQ_help缺少此请求格式的模板   和变种。 request.formats:[“text / html”] request.variant:[]

main_page.html.erb

<%= link_to "FAQ", FAQ_help_path  %>

<div id="content">

</div>

help_controller.rb

def FAQ_help
  respond_to do |format|
    format.html {}
    format.js
  end
end

FAQ_help.js.erb

$('#content').html("<%= render :partial => 'FAQ_help' %>");

_FAQ_help.html.erb

<div>
  <h1> This is the FAQ </h1>
</div>

的routes.rb

get 'FAQ_help', to: 'help#FAQ_help'

2 个答案:

答案 0 :(得分:1)

这个怎么样:

# main_page.html.erb
<%= link_to "FAQ", FAQ_help_path, remote: true %>

# faq_help.js.erb
$('#content').html("<%= escape_javascript(render :partial => 'FAQ_help')

干杯!

答案 1 :(得分:0)

由于您已为此请求创建了一个方法,因此我会更清楚地定义它:

def FAQ_help
  respond_to do |format|
    format.html {}
    format.js {render: FAQ_help}
  end
end

如果你想保持你的控制器清洁,我会通过链接传递一个参数,并检查是否存在婴儿车,如果它是渲染FAQ部分:

查看:

<link_to "Your FAQ"  your_path, data: {method: :get, :remote => true, params: { faq: "#{current.user_name}" }.to_param }, :class =>"button" %>

控制器:

if params[:faq].present?
    respond_to do |format|
    format.html {}
    format.js {render: FAQ_help}
  end
else
  respond_to do |format|
    format.html {}
    format.js {} #your default view for this method 
  end
end

这对于显示IE来说很方便:根据请求显示不同的内容

ie: parms =bob # displays bobs FAQ
ie: parms =ted # displays teds FAQ

此技术类似于您创建搜索时所实现的技术。