如何循环遍历值并使用 Rails 和 Haml 链接到它们

How to loop through values and linking to them using Rails and Haml

我有两个模型,Downtowns 和 Properties。关系是一对多的,一个市区,很多物业。我在显示和 link 访问市区显示页面上每个市区属性的列表时遇到问题。

而不是每个 属性 的实际 link,我得到的是 HTML 文本,显示在几乎看起来是字符串的内容中,但没有可执行路径。

我得到的不是 downtown property 1 作为 link,而是:

<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. 

在 Haml 中这样做是可能的,而且不太困难。我唯一做错的是我格式化它的方式。

我改了

    = @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)