Вы должны определить метод контроллера, который устанавливает ваш атрибут saved
. По вашему мнению, вы можете ссылаться на этот метод, используя link_to_remote
.
Это должно помочь вам начать.
- Обновление: после обновления вопрос:
Вы должны создать партиал, который визуализирует вашу кнопку сохранения / несохранения следующим образом, назовите ее "_save_unsave_buttons.html.erb":
<div id="save_buttons">
<% if matching.employer_stars %>
<%= link_to_remote "Unsave",
:url => {:action => "save_toggle", :id => matching.id},
:update => {:success => "save_buttons", :failure => "Error"} %>
<% else %>
<%= link_to_remote "Save",
:url => {:action => "save_toggle", :id => matching.id},
:update => {:success => "save_buttons", :failure => "Error"} %>
<% end %>
</div>
Это частичное отображение правильных кнопок сохранения, и после обновления содержащийся div обновляется / заменяется результатом действия вашего контроллера.
Внутри вашего основного вида напишите
<%= render :partial => "save_unsave_buttons", :locals => {:matching => match } %>
где вы хотите, чтобы кнопки были видны.
А внутри вашего контроллера:
def save_toggle
@matching = Matching.find(params[:id])
@matching.employer_stars = !@matching.employer_stars
@matching.save
render :partial => "save_unsave_buttons", :locals => {:matching => @matching}, :layout => false
end
Удачи!
- Обновите еще раз: поэтому я предполагаю, что вы отображаете набор @matchings, я бы немного изменил имя между коллекцией и элементом, чтобы избежать путаницы и случайных опечаток.
Но на самом деле это довольно просто:
@matchings.each do |match|
.. build your view here ..
<%= render :partial => "save_unsave_buttons", :locals => {:matching => match}
end
, и тогда вы можете использовать правильное matching
везде.