Я пытаюсь создать ресурс комментариев для повторного использования, который я могу добавить к другим ресурсам, чтобы они могли оставлять комментарии.Я могу добиться этого относительно легко, используя следующее:
IE: views / blog / index.html.erb
# blog here...
<%= render partial: 'comments/form', locals: { comment: Comment.new } %>
<%= render @comments %>
controllers / comments_controller.rb
def create
@comment = Comment.new(comment_params)
respond_to do |format|
if @comment.save
format.html { redirect_to @comment, notice: 'Comment was successfully created.' }
format.json { render :show, status: :created, location: @comment }
else
format.html { render :new }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
...
views / comment / _form.html.erb
<%= bootstrap_form_with(model: comment, local: true) do |form| %>
<%= form.text_area :message, rows: 5 %>
<%= form.submit class: 'btn btn-secondary float-right' %>
<% end %>
Это работает, однако проверка формы не работает независимо от того, как я настраиваю форму.
Способы, которыми я пытался настроить форму:
Решение 1
<%= form_with(model: comment, local: false) do |form| %>
Это решение работает, однако родные рельсы прерывают проверку формы и не будут отображать ошибки проверки.
Решение 2
<%= form_with(model: comment, format: 'json') do |form| %>
Еще раз проверка формы не работает и потребует, чтобы я сам подключил ее в javascript (я бы предпочел использовать rails из коробки)1024 *
Решение 3:
<%= form_with(model: comment, local: true) do |form| %>
Это работает, однако он перенаправляет меня с исходной страницы на / comments / new, когда возникает проблема с проверкой (и успешно проверяет ее там).
Я нахожу большую выгоду в том, чтобы делать вещи «рельсовым путем».Мой вопрос заключается в том, как официальный путь rails для встраивания формы для ресурса в другое представление ресурсов и получения хорошей встроенной проверки rails?
Как официальный способ rails справляется с этим?