在控制器中
if params[:name]==params[:name]
@categories=Category.where(:hotel_id=>params[:hotel_id])
@menus=Menu.where(:category_id=> params[:id]).sorted
@cart = current_cart
end
在索引页面中:
<%@categories.each do |d|%>
<%= link_to d.name ,{:action=>'index',:id=>d.id,:hotel_id=>d.hotel_id},class: "btn-orange" %>
<%end%>
我正在获取所有类别,并且它是来自数据库的受尊重的菜单项。如何在页面加载时自动点击第一个类别链接。
答案 0 :(得分:1)
要直截了当地回答您的问题,您必须use JQuery to invoke the click event:
#app/assets/javascripts/application.js
var loaded = function(){
$("a.first_link").trigger("click");
};
$(document).on("page:load ready", loaded);
-
<强>结构强>
毋庸置疑,这并不意味着您将构建一个强大,高效的系统。相反,这意味着你将召集一个你不应该做的事件。
正如评论中所提到的,看起来你的控制器就是这种类型business logic应该出现的地方:
#config/routes.rb
resources :hotels do
resources :categories
end
#app/models/hotel.rb
class Hotel < ActiveRecord::Base
has_many :categories
end
#app/models/category.rb
class Category < ActiveRecord::Base
has_many :menus
end
#app/controllers/categories_controller.rb
class CategoriesController < ApplicationController
before_action :set_cart
def index
@hotel = Hotel.find params[:hotel_id]
@categories = @hotel.categories
@menus = @categories.find(params[:id]).menus.sorted
end
private
def set_cart
@cart = current_cart
end
end
答案 1 :(得分:0)
您可以使用trigger
来调用jquery上的操作,如下所示:
$(documnet).on("page:load ready", function(){
$("a.first_link").trigger("click");
})
您可以阅读更多trigger和load page event。
答案 2 :(得分:0)
使用each_with_index获取/检测第一个元素(这是你想要的),然后使用jquery点击它
查看文件
<%@categories.each_with_index do |d,index|%>
<%= link_to d.name ,{:action=>'index',:id=>d.id,:hotel_id=>d.hotel_id},id:first_"#{index}",class: "btn-orange" %>
<%end%>
====================js code to click when page is ready============
$(document).ready(function(){
setTimeout(function() {
//click after 2 seconds when page loads or remove it or use=> $('#first_0').trigger('click'); directly without setTimeout in document.ready()
$("#first_0").click();
}, 2000);
})//document ends