установка тега выбора в Ruby on Rails - PullRequest
0 голосов
/ 12 ноября 2019
<%= form_tag("/posts/create") do %>
  <div class="form">
    <div class="form-body">
      <% @post.errors.full_messages.each do |message| %>
        <div class="form-error">
          <%= message %>
        </div>
      <% end %>

      <div class="continent">
        <label>continent<br>
          <%= @post.continent %>
          <%= select :continent,
            [["Africa","AF"],["North America","NA"],["Oceania","OC"],["Asia","AS"],["Europe","EU"],["South America","SA"]],
            :prompt => "Select" %>
        </label>
      </div>
      <div class="country">
        <label>country<br>
          <%= @post.country %>
          <%= select :country,
            [["Japan","JP"],["China","CH"]],
            :prompt => "Select" %>
        </label>
      </div>

      <div class="title">
        <label>title<br>
        <textarea name="title"><%= @post.title %></textarea>
        </label>
      </div>
      <input type="submit" value="POST">
    </div>
  </div>
<% end %>

Я хочу установить тег выбора для выбора континента и страны пользователя в виде
Но это не очень хорошо работает

Я пытался как-то решить эту проблемупроблема.
И я только что получил форму, которая похожа на «Выбрать тег» , но она включена только «Подсказка»
Пожалуйста, дайте мне несколько советов.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Сначала начните с создания правильных маршрутов:

resources :posts

В Rails вы создаете ресурс, отправляя запрос POST на путь сбора ('/posts').

Затемсоздайте форму с помощью form_for(@post) или form_with(model: @post) (Rails 5.1+) и привяжите экземпляр модели к построителю формы.

<%= form_for(@post) do |f| %>
  <div class="form">
    <div class="form-body">
      <% f.object.errors.full_messages.each do |message| %>
        <div class="form-error">
          <%= message %>
        </div>
      <% end %>
      <div class="continent">
        <%= f.label :continent do %>
          <%= f.select :continent,
            [["Africa","AF"],["North America","NA"],["Oceania","OC"],["Asia","AS"],["Europe","EU"],["South America","SA"]],
            prompt: "Select" %>
        <% end %>
      </div>
      <div class="country">
        <%= f.label :country do %>
          <%= f.select :country,
            [["Japan","JP"],["China","CH"]],
            :prompt => "Select" %>
        <% end %>
      </div>
      <div class="title">
        <%= f.label :title do %>
        <%= f.text_area_field :title %>
      </div>
      <%= f.submit %>
    </div>
  </div>
<% end %>

Это позволяет повторно использовать ту же форму для обновления ресурса. Также, когда вы используете входные помощники, рельсы будут правильно называть входы, чтобы вы могли внести их в белый список:

params.require(:post).permit(:continent, :country, :title)
0 голосов
/ 12 ноября 2019

FormOptionsHelper `select принимает эти аргументы

select(object, method, choices = nil, options = {}, html_options = {}, &block)

Попробуйте явно указать такие варианты:

select :post, :country, [["Japan","JP"],["China","CH"]], { :prompt => "Select" }, { other_html_options }

Если вы находитесь в контексте формы, сделайте это

<%= form_tag("/posts/create") do |form| %>
  <%= form.select :country, [["Japan","JP"],["China","CH"]], { :prompt => "Select" }, { other_html_options } %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...