Почему simple_form не создает мои поля, а вместо этого создает скрытые поля?

#ruby-on-rails #ruby #ruby-on-rails-3 #forms #simple-form

#ruby-on-rails #ruby #ruby-on-rails-3 #формы #simple-form

Вопрос:

Это мой код на ruby:

 <%= simple_form_for([@video, @video.comments.new]) do |f| %>
  <% f.association :comment_title %>
  <% f.input :body %>
  <% f.button :submit %>
<% end %>
  

Это сгенерированная HTML-разметка:

 <form accept-charset="UTF-8" action="/videos/485/comments" class="simple_form comment" id="new_comment" method="post">
    <div style="margin:0;padding:0;display:inline">
        <input name="utf8" type="hidden" value="✓">
        <input name="authenticity_token" type="hidden" value="55xSU8JUe1SgipjAkAEvCvidFdJY3hv8Qz5VBqUSrdE=">
    </div>
    <input class="button" id="comment_submit" name="commit" type="submit" value="Create Comment">
</form>
  

Очевидно, что это неправильно создает поле ввода :body и список выбора ассоциации. Почему это так и как я могу это исправить?

Кстати, у видео много комментариев, и комментарий принадлежит видео. Кроме того, в comment_title много комментариев, и комментарий принадлежит видео. Comment_title генерируется с виртуальными атрибутами.

Пожалуйста, дайте мне знать, если есть какой-либо другой код, который вы хотели бы увидеть.

Комментарии:

1. Обновлено название, чтобы лучше отражать основную часть

Ответ №1:

Оба эти варианта связаны с выбором в вашем приложении rails. Во-первых, вы решили настроить приложение на использование utf8 для кодировки символов. Вторая причина заключается в том, что по умолчанию приложение настроено на защиту от атак по подделке межсайтовых запросов. Маркер подлинности гарантирует, что ответ, возвращающийся на сервер, когда пользователь отправляет форму, на самом деле от вас, а не от какого-либо другого источника, который просто следит за вашим трафиком и отправляет сообщения, чтобы испортить вашу базу данных.

Комментарии:

1. ах да, не могли бы вы, пожалуйста, предоставить информацию о возможных вариантах, которые у меня есть для решения обеих этих проблем?

2. Ни одна из них не является проблемой, которую вы хотите обойти. Есть причина, по которой вы не хотите, чтобы они были там? Вы могли бы отключить защиту от межсайтовых запросов на подделку, но я не уверен, зачем вам это нужно.

Ответ №2:

Итак, проблема заключалась в том, что мне нужно было добавить «=» к <%= в элементах моей формы.

Комментарии:

1. Примите этот ответ.