使用rails'select'方法下拉路径菜单

时间:2011-11-30 22:03:39

标签: ruby-on-rails

从这个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>

1 个答案:

答案 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"]