2009-12-08 3 views
4

Допустим, у вас была простая форма для создания нового объекта статьи в приложении.Автоматически заполнять поля формы в Rails?

<% form_for @article do |f| %> 
<p> 
    name:<br /> 
    <%= f.text_field :name %> 
</p> 
<p> 
    link:<br /> 
    <%= f.text_field :link %> 
</p> 

<p> 
    <%= submit_tag %> 
</p> 

Я использую RSS Feed парсер Feedtools, чтобы получить имена статей, но я не могу показаться, чтобы автоматически заполнять поля формы из данных, которые доступны в другом месте. Скажем, название статьи доступно через params[:name]. Как я могу получить название статьи от params[:name] (или params[:link], если на то пошло) в поле формы, без необходимости вводить его? Я не хочу автоматически создавать объект статьи, потому что пользователь может немного изменить имя.

ответ

11

Если вы передаете информацию, которую хотите отобразить, в конструкторе Article в действии new, форма отобразит заполненную. Даже если новый объект был создан, он не будет сохраняться в db, потому что ни в коем случае не был вызван метод сохранения. Это произойдет в действии create.

def new 
    @article = Article.new :name => "Steve Graham's insane blog", :link => "http://swaggadocio.com/" 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @post } 
    end 
end 

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

+0

Спасибо Стив. Это тоже должно работать. –

+0

нет проблем kenji! –

+1

Я бы рискнул, что это более «стандартный» способ сделать это, так как вы используете объект @article, это позволяет повторно использовать форму, частичную для новых и редактировать. – MattMcKnight

Смежные вопросы