我在我的视图/ index.html.erb中有这个:
<p>List of all counties</p>
<ul>
<% @counties.each do |county| %>
<li><%= link_to "Locations in #{county.name}", generate_county_url_with_prefix(county) %></li>
<% end %>
</ul>
CountiesController:
class CountiesController < ApplicationController
before_filter :extract_county_name, :only => [:show_by_name]
def index
@counties = County.all
end
def show
@county = County.find(params[:id])
end
def show_by_name
@county = County.find_by_name(@county_name)
render :show
end
private
def extract_county_name
@county_name = params[:county_name_with_prefix].gsub(County::ROUTE_PREFIX,"").gsub("-", " ").strip
end
end
一切正常,直到我尝试在县/ show.html.erb内调用@locations。
<ul>
<% @locations.each do |location| %>
<li><%= link_to "#{location.name}", generate_location_url_with_prefix(location) %></li>
<% end %>
</ul>
我知道这是因为它没有在上面的控制器中定义,但是当我确定它时,我得到了错误。如何从这个节目视图中引用@location变量(即意图是显示县内的所有位置 - 在数据库中)?
非常感谢
答案 0 :(得分:0)
您需要使用要迭代的数据填充Counties控制器上的会话或全局变量。
显示方法(县控制器)
@locations = Location.where("county_id = #{params[:id]}").all
类似的东西。
答案 1 :(得分:0)
我很确定这里的问题是Cloud 9 ide没有正确保存文件,因此创建了一个非常令人困惑的场景(对于新手到rails)。似乎我(或多或少)有正确的代码允许我从县控制器调用@locations(并且数据库列/数据设置是支持的):
class CountiesController < ApplicationController
before_filter :extract_county_name, :only => [:show_by_name]
def index
@counties = County.all
@locations = Location.all
end
def show
@county = County.find(params[:id])
@locations = Location.all