Есть форма, которая вызывает метод destroy. Нужно этому методу передать значение id страницы пользователя, на странице которого была вызвана форма. Через params[:id] в метод уходит id текущего пользователя, совершающего действия над формой, а не пользователя, на странице которого эта форма вызывается.
Примечание:
Код сейчас страшен, как атомная война... Это я destroy переделывал под свои нужды:
def destroy
@user = Relationship.find(params[:id]).allowed
if !current_user.relationships.find_by_allowed_id(@user.id).nil?
current_user.relationships.find_by_allowed_id(@user.id).update_attributes(:freeze => true)
end
if
[email protected]_by_allowed_id(current_user.id).nil?
@user.relationships.find_by_allowed_id(current_user.id).update_attributes(:freeze => true)
end
respond_with @user
if newbie?(current_user) && helper?(@user)
UserMailer.do_not_accept_your_help(current_user, @user).deliver
elsif helper?(current_user) && newbie?(@user)
UserMailer.do_not_agree_to_help_you(current_user, @user).deliver
end
end
Код формы, вызывающей destroy:
<%= form_for current_user.relationships.find_by_allowed_id(@user),
:html => { :method => :delete, params[:id] => @user.id },
:remote => false do |f| %>
<div class="actions">
<% if newbie?(current_user) && helper?(@user) %>
<%= f.submit "Отказаться\nот помощи", :class => 'cancel round', :confirm => 'Вы уверены, что хотите отказаться от помощи данного пользователя?' %>
<% elsif helper?(current_user) && newbie?(@user) %>
<%= f.submit "Отказать\nв помощи", :class => 'cancel round', :confirm => 'Вы уверены, что хотите отказать данному пользователю в помощи?' %>
<% end %>
</div>
<% end %>
Выдается эта форма вот в каком случае:
<% unless current_user?(@user) %>
<div class="follow_form">
<% if current_user.allowing?(@user) && !frozen_for_by?(current_user, @user) && !frozen_for_by?(@user, current_user) %>
<%= render 'disallow' %>
<% elsif !current_user.allowing?(@user) && !frozen_for_by?(current_user, @user) && !frozen_for_by?(@user, current_user) %>
<%= render 'allow' %>
<% end %>
</div>
<% end %>
Вот после рендеринга allow-формы нужно вставить еще рендеринг refuse-формы (для отказа, т.е. действовать должна как и disallow), при условии, что пользователю предложили помощь или попросили о помощи:
<%= form_for @user.relationships.find_by_allowed_id(current_user),
:html => { :method => :delete },
:remote => false do |f| %>
<div class="actions">
<% if newbie?(current_user) && helper?(@user) %>
<%= f.submit "Отказаться\nот помощи", :class => 'cancel round', :confirm => 'Вы уверены, что хотите отказаться от помощи данного пользователя?' %>
<% elsif helper?(current_user) && newbie?(@user) %>
<%= f.submit "Отказать\nв помощи", :class => 'cancel round', :confirm => 'Вы уверены, что хотите отказать данному пользователю в помощи?' %>
<% end %>
</div>
<% end %>
Знаю, код ужасен. Но я сначала хочу, чтобы это работало, а потом уже занимаюсь рефакторингом.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.