i have the following Problem, i Have the following in my customer bill view
<%= f.collection_select :product_id,Product.all,:id,:name %>
This is getting list of all the products from "Product" model and giving option to select from it. But i want to select the list of products from the "StoreOpeningStock" model.
I have these in my model
class Product< ActiveRecord::Base
has_many :store_opening_stocks
has_many :customer_bills
attr_accessible :name
end
class StoreOpeningStock < ActiveRecord::Base
attr_accessible :product_id
belongs_to :product
end
class CustomerBill < ActiveRecord::Base
attr_accessible :product_id
belongs_to :product
accepts_nested_attributes_for :store_opening_stock
end
Can anyone guide me how i can get product name and id from store_opening_stock??? Should i use Helpers??? or is there any other way?? Thanks in advance
I tried using helpers
def getting_prod_names
@sto = StoreOpeningStock.all
for x in @sto
[
['{x.product.title}', '{x.product_id}']
]
end
end
getting following output
<%= f.select :product_id, options_for_select(getting_prod_names) %>
ANy Help?? :)
When you create a form the data used to ccreate a collection_select
isnt limited to the Class your going to create an object for. You could simply do the following:
<%= f.collection_select :product_id,StoreOpeningStock.all,:product_id ,:name %>
This should to it for you,...
add this to your StoreOpeningStock
class:
def name
return self.product.name unless self.product.nil?
""
end
You need to clarify the relationship between your models...
But just to give you an idea. You can define the collection of products you want to display in your controller
, inside the action
related to the view (where you are displaying the collection).
Controller:
@products= #here you should call all products you want
Then, your collection of products can be displayed like:
<%= f.collection_select :product_id, @products,:id,:name %>
EDIT
You need to revise the relationship between your models. A product
has many customer_bills
, but are you sure that each customer_bill
belongs to a single product
?
I think you have a many-to-many relationship, as a customer_bill
can also have many products
.
If I understand it right, the solution is to create a ProductLine
model between this many-to-many relationship.
Also, what is the difference between Product
and StoreOpeningStock
? What attributes have you included in the StoreOpeningStock
?
If you have created this model only to show the availability of products, why don't you add an attribute in the Product
model, for example a boolean column called availability
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With