Ruby on Rails - 同时调用html.erb和js.erb

时间:2017-04-22 13:32:11

标签: javascript jquery ruby-on-rails ruby controller

我的目标是使用相同的控制器调用html.erb和js.erb文件,但它只调用我的html文件。
我的js未被调用。
controller / categories_controller.rb

Image::make(Input::file('artist_pic')->getRealPath())->resize(120,75);

查看/分类/ index.html.erb

  def index
    respond_to do |format|
      format.html
      format.js
    end
    @categories = Category.order('name ASC')
    @category = params[:category]
end

views / categories / index.js.erb(问题在于此处,此文件未被调用)

<% @categories.each do |c| %>
  <%= link_to c.name, show_category_path(category: c.id), :id => "btn-filter#{c.id}" %>
<% end %>

3 个答案:

答案 0 :(得分:3)

控制器以请求要求的格式响应,因此,您的链接要求HTML而不是JS,因此控制器以.html.erb响应。如果您添加了一个电话,请执行以下操作:

<%= link_to c.name, show_category_path(category: c.id), :id => "btn-filter#{c.id}", remote: true %>

您的请求将要求JS(因为remote: true属性),控制器将以.js.erb回复。

答案 1 :(得分:1)

You should add remote: true option

<% @categories.each do |c| %>
  <%= link_to c.name, show_category_path(category: c.id),remote:true, :id => "btn-filter#{c.id}" %>
<% end %>

它会自动找到index.js.erb文件。

答案 2 :(得分:1)

只需将 remote:true 属性添加到link_to。