Ответ 1
Просто позвольте form_for
обработать его:
контроллер:
class ControllerName
def new
@post = Post.new
end
def edit
@post = Post.find params[:id]
end
end
Вид:
<%= form_for [:admin, @post] do |f| %>
<% end %>
В rails 3, возможно ли создать form_for, который работает как для новых, так и для обновления и редактирования?
Если да, как это сделать?
У меня есть раздел администратора, поэтому мои URL-адреса выглядят следующим образом:
/admin/posts/ {new,update, edit}
Просто позвольте form_for
обработать его:
контроллер:
class ControllerName
def new
@post = Post.new
end
def edit
@post = Post.find params[:id]
end
end
Вид:
<%= form_for [:admin, @post] do |f| %>
<% end %>
Поскольку новые нужно отправлять, а редактирование нужно отправлять, чтобы обновить один form_for, это не сработает. Если (я не обязательно рекомендую), вы размещаете третичный оператор в параметрах form_form
form_for(@post, :url => (@post.new_record? ? admin_posts_url : admin_post_url(@post)))
Потому что в вашем новом действии у вас будет Post.new, который создает объект с идентификатором nil, и в вашем действии редактирования у вас будет Post.find(params [: ID])