单个form_for如何为新的,更新和编辑工作?

时间:2011-02-15 03:46:38

标签: ruby-on-rails

在rails 3中,是否可以创建适用于新操作,更新操作和编辑操作的form_for?

如果是,我该怎么做?

我有一个管理部分,所以我的网址看起来像:

/admin/posts/ {new,update, edit}

2 个答案:

答案 0 :(得分:29)

form_for处理它:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for-label-Resource-oriented+style

控制器:

class ControllerName
  def new
    @post = Post.new
  end
  def edit
    @post = Post.find params[:id]
  end
end

视图:

<%= form_for [:admin, @post] do |f| %>
<% end %>

答案 1 :(得分:19)

因为需要发送新的创建,并且需要发送更新单个form_for的编辑将无法工作..除非(我不一定建议)你在form_form参数中放置第三个运算符

form_for(@post, :url => (@post.new_record? ? admin_posts_url : admin_post_url(@post)))

因为在你的新动作中你将会有 Post.new ,它会创建一个带有nil id的对象,并且在你的编辑动作中你会有 Post.find(params [: ID])