在使用rails中的select
标记时,我在理解options_from_collection_for_select
方法时遇到了麻烦。根据我的理解,这个帮助器需要一组任意对象和两个额外的参数:分别从中读取选项值和文本的方法的名称:
<%= options_from_collection_for_select(Product.all, :id, :name) %>
这是帮助理解帮助程序的好例子,仅在id
和name
字段属于Product
时才有效。假设,在我的情况下,我希望product.category.name
显示为文本,那么我该如何实现呢。
同样,product
和category
模型具有one-to-one
关联。
为了实现我的目标,我尝试了以下但我认为,这种关联违反了规则。
<%= options_from_collection_for_select(Product.all, :id, Product.category_name) %>
那么,有人可以提出更好的解决方案吗?
答案 0 :(得分:0)
在这种情况下,您可以使用模型方法。
在 product.rb
中 public static void DisposeImage(BitmapImage image)
{
Uri uri= new Uri("oneXone.png", UriKind.Relative);
StreamResourceInfo sr=Application.GetResourceStream(uri);
try
{
using (Stream stream=sr.Stream)
{
image.DecodePixelWidth=1; //This is essential!
image.SetSource(stream);
}
}
catch { }
}
您可以在options_from_collection_for_select中将其称为
def get_category_name
self.category.name
end
首先,它会检查产品表中是否存在任何列,然后检查方法。
答案 1 :(得分:0)
您可以在Product modal中使用category_name创建实例方法。
def category_name
self.category.name
end
然后,在视图中使用此帮助程序。
<%= options_from_collection_for_select(Product.all, :id, :category_name) %>
答案 2 :(得分:0)
在产品型号中:
echo date("Y-m-d H:i:s");//current date
echo date("H:i:s");//current time
并且在视野中:
def category_name
self.category.name
end
答案 3 :(得分:0)
您需要在SetTimer()
模型中使用category_name
的getter方法:
Product
在您看来,您只需致电def category_name
self.category.name
end
:
:category_name
希望这会有所帮助