2015-12-02 4 views
0

Я создаю простой CRUD в своей сети.Rails: link_to и session

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

Да, в действии диска я установил session [: "is_checked # {Diot.find (params [: id])}"] = false, в действии drive_stop я установил сеанс [: "is_checked # {Diot.find (params [: id])} "] = true, но также показывают« Стоп ». –