Take the 2-minute tour ×
<% semantic_form_for(@product, :html => {:multipart => true}) do |f| %>

    <% f.inputs do %>
        <%= f.input :name %>
        <%= f.input :price %>
        <%= f.input :pno %>
        <%= f.input :description %>
        <%= f.input :shop_category %>
    <% end %>
<% end %>

Product belongs to Shop_category, Shop_category belongs to Shop.

How to change the line :

<%= f.input :shop_category %>

To show only shop_categories that belongs to Shop with id for example 15 instead of showing all shop_categories in the select box ?

share|improve this question
add comment

2 Answers

up vote 13 down vote accepted

There's a :collection option for the select input.

<%= form.input :shop_category, :collection => @shop.ShopCategories %>

So you can, by providing a Hash to that collection attribute, display the categories you need, with the required conditions.

share|improve this answer
add comment

Also, if you set the shop_category in the controller, it will already be selected as a default value.

share|improve this answer
Also you could (and should?) do it in the model: after_initialize { self.attribute_name ||= defaul_value }. –  jibiel Mar 7 '12 at 12:42
add comment

Your Answer


