Ruby on Rails: ошибка создания записи из представления

У меня есть отдельная проблема.

У меня есть таблица, которая заполняется из нескольких разных моделей, она создает ссылки, чтобы следовать каждому соответствующему представлению.

Код, который я сделал для каждой ссылки, должен быть одинаковым, но по какой-то причине ссылка не отображается в разделе "Базовая линия". Я проверил: create методы для каждой модели, и они подражают друг другу, и код из представления также является просто копией - так что я не знаю, где искать дальше. Я уверен, что проблема в том, что метод create не работает, но я не знаю, где и как.

Вот код с моей точки зрения (я также вставляю код FollowUp3Week, потому что он работает):

  <% if Baseline.where(subject_id: sub.subject_id).first != nil %> 
    <%= link_to "edit", baseline_path([Baseline.where(subject_id: sub.subject_id).first]) %>              
  <% else %>
    <%= Baseline.create(subject_id: sub.subject_id) %> #I left the equal for the screenshot.
  <% end %>
  </td> 

  <td>
  <% if FollowUp3Week.where(subject_id: sub.subject_id).first != nil %>
    <%= link_to "edit", follow_up3_week_path([FollowUp3Week.where(subject_id: sub.subject_id).first]) %>
  <% else %>
    <% FollowUp3Week.create(subject_id: sub.subject_id) %>
  <% end %>
  </td>

А вот метод создания из baselines_controller.rb

  def create
    @baseline = Baseline.new(params[:baseline])
    if @baseline.save
      flash[:success] = "Baseline added from create method"
      redirect_to baselines_url
    else
      render 'new'
    end
  end

Я также прилагаю изображение того, на что это похоже. Если я уберу знак равенства из<% =, ячейка будет пустой. изображение http://i60.tinypic.com/24q1h0k.png

РЕДАКТИРОВАТЬ. Я нахожусь в процессе удаления всех моих запросов к базе данных из представления. Спасибо за ваши Коментарии.

2 ответа

Решение

Вы должны действительно вывести этот Baseline.where из поля зрения и в модель. Сфера видимости AR с точки зрения серьезного нет-нет в Rails.

В базовом режиме вы можете сделать что-то вроде:

    def empty_subject(subject_id)
      where(subject_id: subject_id).first != nil 
    end

Кроме того, похоже, что вы передаете массивы в baseline_path и follow_up3_week_path. Угробить квадратные скобки.

На базовой модели, поставить это

def display_name
  "#{name}" #whatever you like to show including link
end
Другие вопросы по тегам