Как l oop через значения и ссылки на них с помощью Rails и Haml - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть две модели, Downtowns и Properties. Отношения один-ко-многим, один центр города, много свойств. У меня проблемы с отображением и связью со списком свойств каждого центра города на странице шоу в центре города.

Вместо реальной ссылки на каждое свойство, вместо этого я получаю текст HTML, отображаемый в том, что будет почти кажется строкой, но без пути к исполняемому файлу.

Вместо получения downtown property 1 в качестве ссылки я получаю:

<a href="/downtowns/1/properties/1">downtown property 1</a>

Мой файл маршрута:

resources :downtowns do
    resources :properties
  end

Мой контроллер в центре города:

def show
    @properties = Property.where(downtown: @downtown_id)
  end

  def new
    @downtown = Downtown.new
  end

  def create
    @downtown = Downtown.create(downtown_params)
    if @downtown.save
      redirect_to @downtown
    else
      render 'new'
    end
  end

  def downtown_params
    params.require(:downtown).permit(:name, :city)
  end

Мой контроллер свойств:

  def new
    @property = Property.new
  end

  def create
    @downtown = property.find(id)
    @property = Property.create(params[:property_params])
    @property.downtown_id = @downtown.id

    if @property.save
      redirect_to @property
    else
      render 'new'
    end
  end

  def show
  end

И, наконец, моя страница шоу в центре города:

%h2= @downtown.name

- if @downtown.properties.present?
  %p 
    = @downtown.properties.map {|property| link_to(property.name, downtown_property_path(property)) }.join("<br/>")
- else
  No downtowns for now. 

1 Ответ

1 голос
/ 14 февраля 2020

Выполнение этого в Хамле возможно и не слишком сложно. Единственное, что я делал неправильно, было то, как я его форматировал.

Я изменил

    = @downtown.properties.map {|property| link_to(property.name, downtown_property_path(property)) }.join("<br/>")

на

- @downtown.properties.collect do |property|
      = link_to property.name, downtown_property_path(property)
...