Проблемы при создании поля формы URL с использованием вида действия и form_for
Попытка создать поле формы, в котором пользователь может отправить URL-адрес по адресу: http://apidock.com/rails/v3.2.13/ActionView/Helpers/FormHelper/url_field
Я получаю сообщение об ошибке: ActionView::Template::Error (неопределенный метод "homepage" для #
вот модель:
class Idea < ActiveRecord::Base
has_many :comments
mount_uploader :picture, PictureUploader
attr_accessible :description, :name, :picture, :homepage
end
представление в form.html.erb
<%= form_for(@idea) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :link %><br />
<%= url_field("homepage") %><br />
</div>
<div class="actions">
<%= f.submit %>
представление в show.html.erb
<p><b>Name: </b><%= @idea.name %></p>
<p><b>Link:</b><%= @idea.homepage %></p>
ideas_controller
def create
@idea = Idea.new(params[:idea])
respond_to do |format|
if @idea.save
format.html { redirect_to @idea, notice: 'Idea was successfully created.' }
format.json { render json: @idea, status: :created, location: @idea }
else
format.html { render action: "new" }
format.json { render json: @idea.errors, status: :unprocessable_entity }
end
end
end
def show
@idea = Idea.find(params[:id])
@comment = @idea.comments.build
respond_to do |format|
format.html # show.html.erb
format.json { render json: @idea }
end
end
2 ответа
ИМХО использование url_field в конструкторе форм устарело и подвержено ошибкам. В конце концов мне удалось найти: rails auto link от tenderlove: https://github.com/tenderlove/rails_autolink сочетании с tinymce-rails от spohlenz: https://github.com/spohlenz/tinymce-rails. С помощью этих двух драгоценных камней вы можете создать полнофункциональное поле формы и гораздо более эффективно отображать результаты. Надеюсь, это поможет кому-то еще.
По сути, когда вы передаете и используете переменную для блока в form_for, она уже устанавливает связь полей формы.
то есть:
url_field('user', 'homepage')
эквивалентно
f.url_field('homepage')
Проверьте поле url_ и документацию form_for