Rails: полный объект отображается вместо параметра - PullRequest
0 голосов
/ 03 мая 2019

У меня есть веб-приложение, которое отображает questions с options.Проблема в том, что options отображает весь объект вместе с параметром body объекта.Я не знаю, что здесь происходит.Это что-то связанное с serializing и deserializing?

index.html.erb

 <tbody>
    <% @questions.each do |question| %>
      <tr>
        <td><%= question.body %></td>
        <td><%= question.user.email %></td>
        <td>
          <%= question.options.each do |p| %>  
            <%= radio_button_tag('option',p.id) %>
            <%= p.body %>
          <% end %>

        </td>

        <td><%= link_to 'Show', question %></td>
        <% if current_user && current_user.admin %>
          <td><%= link_to 'Edit', edit_question_path(question) %></td>
          <td><%= link_to 'Destroy', question, method: :delete, data: { confirm: 'Are you sure?' } %></td>          
        <% end %>

      </tr>
      <tr>

      </tr>
    <% end %>
  </tbody>

controller_params

private

    def set_question
      @question = Question.find(params[:id])
    end


    def question_params
      params.require(:question).permit(:body, options_attributes: [:body])
    end

модель

class Question < ApplicationRecord
  belongs_to :user
  has_many :options, dependent: :delete_all, :autosave => true
  validates_length_of :options, maximum: 4
  accepts_nested_attributes_for :options
end

выход

enter image description here

1 Ответ

2 голосов
/ 03 мая 2019
<%= question.options.each do |p| %>  
  <%= radio_button_tag('option',p.id) %>
  <%= p.body %>
<% end %>

Ваша проблема с этим блоком.Ваша первая часть ERB говорит представлению визуализировать question.options.each, а также следующий HTML, в результате чего сами объекты отображаются.Изменение на:

<% question.options.each do |p| %>  
  <%= radio_button_tag('option',p.id) %>
  <%= p.body %>
<% end %>

Исправит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...