2013-07-28 2 views
0

Прежде всего, я новичок в рельсах
У меня такой контроллер, как этот. Запросы работают нормально.Rails динамическая маршрутизация в разные переменные экземпляра контроллера

class StoreController < ApplicationController 

    def men_clothing 
    @men_clothing=Category.find_by_name("clothes").products.where(product_type: "men") 
    @men_clothing_tshirt=Category.find_by_name("clothes").sub_categories.find_by_name("t-shirt").products 
    end 

Теперь у меня есть вид на men_clothing, в котором я нахожусь в состоянии показать все продукты в @men_clothing переменную экземпляра итерируя над ним.

Но в моей домашней странице у меня есть ссылки, которые я хочу направить @men_clothing_tshirt переменной экземпляра, например, что при нажатии на эту ссылку будут показаны все продукты этого экземпляра variable.And, если есть еще одна ссылка должна направить к другой переменной экземпляра.

Как этого добиться? Или предложите альтернативный способ сделать это. Объясните, как это работает.

Я знаю, что могу сделать это, выполнив отдельные действия для каждой переменной экземпляра и сделав для нее представление. Но в этом случае мне придется сделать много мнений.

ответ

1

Возможно, вы могли бы попробовать что-нибудь similar to this link?

[:tshirt, :pant, :banana_hammock].each do |category| 
    get "mens_#{category}/:id", :controller => :mens, :action => :show, :type => category, :as => "mens_#{category}" 
end 

Тогда вы получите свои пути, которые вы ищете, например. mens_tshirt_path, mens_pant_path и т.д.

В контроллере, вы бы изменить действие измениться в зависимости от входящего «типа»

class MenController < ApplicationController 
    before_filter :find_clothing_by_category 

    private 

    def find_clothing_by_category 
    @clothing = Clothes.where(category: params[:type].to_s) 
    end 
end 
0

Ваша ссылка не перенаправляется на ваш экземпляр, его перенаправление на ваше действие. так что вы должны определить новый метод для нового link_to что, и определить ваш @men_clothing_tshirt объект в этом методе, как это:

def your_method 
    @men_clothing_tshirt=Category.find_by_name("clothes").sub_categories.find_by_name("t-shirt").products 
end 

и в вашем link_to перенаправлять your_method:

link_to "Tshirt", your_method_path 

Надеется, что это поможет . Спасибо

+1

Как я уже говорил, я знал, что этот метод. Но дело в том, что этим методом мне придется создавать методы и представления для всех таких переменных экземпляра, которые являются большими по количеству. – mrudult

Смежные вопросы