从这个documentation我看到我可以使用这样的select方法:
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, { :include_blank => true })
它产生:
<select name="post[person_id]">
<option value=""></option>
<option value="1" selected="selected">David</option>
<option value="2">Sam</option>
<option value="3">Tobias</option>
</select>
如果我有这样的数组,我的select方法会是什么样的:
[["Add Post", new_post_path],["Add Document", new_document_path],["Add Coupon", new_coupon_path]]
我想要这样的HTML:
<select name="post[person_id]">
<option value="new_post_path" selected="selected">Add Post</option>
<option value="new_document_path">Add Document</option>
<option value="new_coupon_path">Add Coupon</option>
</select>
答案 0 :(得分:2)
在您的控制器中:
@paths = [ ["Add Post", new_post_url], ["Add Document", new_document_url], ... ]
在你看来
select("post", "person_id", @paths, { :include_blank => true })
这应该将实际的URL放在值字段中。如果您想要上面提到的字符串,但引号中的路径,例如["Add Post", "new_post_path"]