2015-12-02 53 views
0

我在我的網站中創建簡單的CRUD。Rails:link_to和會話

index.html.erb

<% @diots.each do |diot| %> 
     <tr> 
     <td align="center"><%= diot.id %></td> 
     <td align="center"><%= image_tag(diot.something, width: '50', height: '50') %></td> 
     <td align="center"><%= link_to session[:is_checked] ? "Running" : "Stop", (session[:is_checked] ? drive_diot_path(diot) : drive_stop_diot_path(diot)) %></td> 
     <td align="center"><%= link_to 'Edit', edit_diot_path(diot) %></td> 
     <td align="center"><%= link_to 'Destroy', diot, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     </tr> 
    <% end %> 

當我點擊其中的「暗戰」,會去drive.html.erb,但我回去index.html.erb,他們都在改變「停止」 。

我該怎麼辦,當我點擊其中一個「運行」,返回index.html.erb,只有一個更改爲「停止」?

感謝

+0

您是否遵循了文檔或其示例? – Rao

回答

0

您可以在會話存儲值爲每個diot做到這一點:

會話[: 「is_checked#{} diot.id」]

給你(注: :"string"給出了一個有效的符號)

<% @diots.each do |diot| %> 
    <tr> 
    <td align="center"><%= diot.id %></td> 
    <td align="center"><%= image_tag(diot.something, width: '50', height: '50') %></td> 
    <td align="center"><%= link_to session[:"is_checked#{diot.id}"] ? "Running" : "Stop", (session[:"is_checked#{diot.id}"] ? drive_diot_path(diot) : drive_stop_diot_path(diot)) %></td> 
    <td align="center"><%= link_to 'Edit', edit_diot_path(diot) %></td> 
    <td align="center"><%= link_to 'Destroy', diot, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
+0

對不起,我還是不知道,我用過你的建議,但都變「停」,你能詳細介紹一下嗎?謝謝!! –

+0

您需要在單擊鏈接時調用的操作中將session [:「is_checked#{diot.id}」]'設置爲true/false。否則,它們將默認設置爲「nil」,並顯示「Stop」。 – javanut13

+0

是的,在驅動器動作中,我設置了會話[:「is_checked#{Diot.find(params [:id])}」] = false,在drive_stop動作中,我設置了會話[:「is_checked#{Diot.find (params [:id])}「] = true,但也顯示」停止「。 –