переменная экземпляра и символ в ruby ​​на рельсах (form_for) - PullRequest
11 голосов
/ 05 июня 2009

Я новичок в ruby ​​на рельсах и работаю с версией 2.3 на Mac OSX. я пытаюсь создать ту же функциональность, которую создает эшафот, но самостоятельно. Я создал "пост" контроллер, представление и модель. в почтовом контроллере у меня есть следующее:

class PostController < ApplicationController
  def index
  end

  def new
    @post = Post.new
  end
end

в new.html.erb, у меня есть следующее:

<h1>New Post</h1>

<% form_for :post do |f| %>

    <%= f.text_field :title %>

<% end %>

я заметил, что в сгенерированном скаффолдом коде используйте переменную экземпляра @post для помощника form_for. почему они используют переменную экземпляра в сгенерированной скаффолдом форме, если передача символа: post в form_for делает то же самое, а символ требует изменения конфигурации маршрутов?

большое спасибо, Юваль

Ответы [ 2 ]

16 голосов
/ 05 июня 2009

если вы используете символ: пост создает

<form action="/posts" method="post">

если вы используете экземпляр @ post

для @post = Post.new вы получите

<form action="/posts/create" class="new_account" id="new_account" method="post">

для @post = Post.find (1) вы получите

<form action="/posts/update" class="edit_account" id="edit_account_1" method="post">
<input name="_method" type="hidden" value="put">

если у вас есть разные формы для вашего нового и ваше редактирование не имеет большого значения, но скорее похоже на ваше новое, и ваши формы редактирования будут идентичны или близки к нему

поэтому, если вы используете переменную экземпляра @post, вы можете поместить весь код формы в _form и просто вызвать частичное, а остальное будет обрабатываться в зависимости от того, передаете ли вы новую запись или существующую запись

0 голосов
/ 05 июня 2009

Одной из возможных причин является то, что код формы для создания новой публикации становится более похожим на код формы для обновления существующей записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...