2012-12-17 53 views
0

我試圖實現「類別」的無序列表,其中如果您單擊特定類別,屬於該類別的所有照片(鋸齒)顯示在屏幕上。我認爲,包括的類別爲:Rails,link_to,無法傳遞值

<div id = "Categories"> 
<h2>Categories</h2> 
<ul><% @cat.each do |c| %> 
    <li><%=link_to c.name, c,:controller => "category", :action => "show" %> 
    </li> 
<% end %> 
</ul> 

我的類別控制器:

def show 
@jags = Jag.where("category_id = params[:id]") 
    if @jags.empty? 
    flash[:notice] = "No jags in this Category" 
    end 
end 

,最後我型我秀的看法是:

<%= render 'nav' %> 
<div><% @jags.each do |j| %> 
<%= image_tag j.image_url(:thumb)%> 
<% end %> 
</div> 

我遇到的問題是,我不知道如何將第一個視圖中的「特定類別」(c)傳遞給類別控制器。我試着讓一個實例變量(@c)顯然我不能做[形式參數不能是一個實例變量 '); @ cat.each do | @c | ; @ output_buffer.safe_concat(']。

如果我運行此代碼,我得到一個SQLlite錯誤[SQLite3 :: SQLException:near「[:id]」:語法錯誤:SELECT COUNT(*)FROM「jags」WHERE (CATEGORY_ID =參數[:編號])。]

回答

1

如果使用REST風格的控制器,這已經足夠了:

<div id = "Categories"> 
<h2>Categories</h2> 
<ul> 
<% @cat.each do |c| %> 
    <li><%=link_to c.name, c %></li> 
<% end %> 
</ul> 
+0

我不明白。 link_to怎麼知道它應該把c.name鏈接到哪裏? – nupac

+0

我們通過'c'這是'類別'對象 –

+0

我不明白的一些事情,1.它怎麼知道它應該去演出行動,2.我怎麼能傳遞'c',因爲它不是一個實例變量 – nupac

1

看到,因爲你得到的ID在控制器中的類別,然後就可以只是做

@category = Category.find params[:id] 

in你的控制器。另外,請按照以下方式清理您的助手link_to