我希望索引页面中有一些选项卡。
每个选项卡都应为食物模型呈现不同的类别。

选项卡工作正常,但具有静态内容。

我有2张桌子:

Foods, Categories


我的食物表中有一列:category_id。

我的关联是:Food has_one category, and Categories has_many foods.

因此,在单击选项卡之一时,必须传递category_id,以便它知道要呈现的内容。

我不知道该如何表达自己的观点(也许是一个范围?)……这是我第一次这样做。

这是选项卡之一的代码:

<ul class="accordion-tabs">
  <li class="tab-header-and-content">
    <a href="#" class="is-active tab-link">Entrantes</a>
    <div class="tab-content row">
     <% @foods.by_category(params[1]).each do |food| %>
      <%= render "food_card" %>
     <% end %>
    </div>
  </li>


我试图在每个选项卡中手动传递参数,但是我不知道是否需要AJAX或其他东西。请帮忙!

更新资料

我的食品管理员

  def index
      @addictfood = Addictfood.last
      @food = Food.last
      @foods = Food.all
      @category = Category.find params[:id]
        respond_to do |format|
            format.html
            format.json { render json: @category.foods.to_json }
      end
  end


我的索引视图(食品)

<ul class="accordion-tabs">
<div class="categories">
  <li class="tab-header-and-content">
   <% @categories.each do |tab| %>
      <%= link_to tab.name, category_show_path(tab), class: "tab-link" %>
   <% end %>
   </li>
</div>
</ul>
</article>

<script>
$(".categories").on("click", "a", function() {
   $.ajax({
       url: $(this).attr("href"),
       dataType: "json",
       success: function(data) {
           $(".category").html(data)
       }
   });
});
</script>


错误

Started GET "/foods" for 127.0.0.1 at 2014-07-02 20:41:53 +0200
Processing by FoodsController#index as HTML
  Addictfood Load (0.3ms)  SELECT "addictfoods".* FROM "addictfoods" ORDER BY "addictfoods"."id" DESC LIMIT 1
  Food Load (0.3ms)  SELECT "foods".* FROM "foods" ORDER BY "foods"."id" DESC LIMIT 1
Completed 404 Not Found in 4ms

ActiveRecord::RecordNotFound (Couldn't find Category without an ID):
  app/controllers/foods_controller.rb:7:in `index'

最佳答案

如果每种食物只有一个类别,则应使用belongs_to类别关联。

在类别中,您可以将其保留为has_many食物。

在类别控制器的显示视图中,您可以像这样拉食物:

<% @category.foods.each do |food| %>
 <%= food.title %>
<% end %>

关于javascript - 我是否需要Ajax或其他东西在选项卡中放入不同的erb内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24527684/

10-16 05:43