2012-10-05 75 views
1

我有一個表項目每個0或更多的類別。在我看來,我想顯示0個項目,直到與每個類別相關的JQuery單擊事件 - 當用戶點擊「食品」時,我想顯示所有類別爲「食品」的項目;當用戶點擊「照片」時,我想要顯示與食品和照片相關的兩個項目。如何在視圖中查看RoR控制器實例變量?

所以在jQuery的單擊事件我定義了一個Ajax調用:

params = 'category_name=' + cat; 
$.ajax({ 
    url: "/projects_controller/filter_list", 
    data: params 
}) 

,其中「貓」是(格式爲「食品攝影雜誌等」)

在所選類別的名稱我的projects_controller我開始了一個filter_list方法:

def filter_list 
    @categories = [] 
    words = params[:category_name].split(/\W+/) 
    words.each { |word| @categories.push(Category.where("name = ?", word)) } 
    @projects = ... 
end 

但現在我卡住了。 1)如何獲得與@categories中的任何類別相關的所有項目?和2)如何在我的視圖中顯示@projects變量?現在我只是顯示所有像這樣:

<% Project.all.each do |project| %> 
       <tr style="display:none" class="project <% project.categories.all.each do |cat| %><%= cat.name %> <% end %>"> 
       <td><%= project.filename %></td> 
       <td><a href='project/<%= project.id %>'><%= project.location %></a> 
       <td><% project.categories.all.each do |cat| %><%= cat.name %>, <% end %></td> 
      <% end %> 

回答

3

您的實例變量$ categories,@projects已經在視圖中可用。因此在視圖中,您可以使用@project而不是自己訪問類Project

<% @projects.each do |project| %> 
    ... 
<% end %> 

但可能你沒有正確設計你的模型。在你的模型中建立正確的relationships。如果我的ERB語法是錯誤的

+0

我試過,並得到錯誤「未定義的方法'每個'爲零:NilClass」該行。 – user1436111

+0

請檢查我的更新的答案,其中有更多的信息和傳統的模型設計實例 – HungryCoder

+0

啊,這是有道理的。非常感謝!! – user1436111

0

的根據視圖(縣)我已經習慣了HAML,很抱歉:如果一個項目屬於一個類別,你可以將它們如下關聯:

#models/category.rb 
class Category < ActiveRecord::Base 
has_many :projects 
end 

#models/project.rb 
class Project < ActiveRecord::Base 
    belongs_to :category 
end 

#controllers/categories_controller.rb 
def index 
    @categories = Category.all #or use your own query 
end 

#views/categories/index.erb 
<% @categories.each do |category| %> 
    # here you can get all projects under this category using 
    # category.projects 
<% end %> 

注一個控制器class可以訪問級別的實例變量(即@my_variable)。

只需要讓@projects = Project.all.each控制器並在視圖替代Project.all@projects

+0

我試過並得到錯誤「未定義的方法'每個'爲零:NilClass」爲該行 – user1436111

+0

然後'Project.all'返回你試圖迭代的'nil'。你有沒有在'projects'中忘記_s_或者這種性質的拼寫錯誤? – rudolph9

+0

我想通了 - 我在我的控制器中定義了錯誤的定義@projects。笨。但非常感謝你! – user1436111

相關問題