Rails3 - учитывая форму, которая позволяет обновлять / создавать - как удалить / уничтожить запись? - PullRequest
1 голос
/ 18 октября 2010

У меня есть следующее, для которого можно создавать или обновлять записи:

<%=form_for [:project, @permission], :remote => true do |f| %>
... You can change roles in the form... (This works great for new or existing records)
<% end %>

Внутри формы я хочу предоставить возможность удалить / уничтожить разрешение.Поэтому я добавил:

<%= link_to 'remove from the team', [:project, @permission], :confirm => 'Are you sure?', :method => :delete %>

Но это не работает, с ошибками ...

Рендеринг выглядит следующим образом:

<a rel="nofollow" data-method="delete" data-confirm="Are you sure?" href="/projects/4/permissions/useronproject">remove from the team</a>

Сообщение об ошибке: NoMethodError в PermissionsController # destroyundefined метод `destroy 'для nil: NilClass

Также передаются только следующие параметры: _method delete auth token ....

Так что я не уверен, как Rails узнает, что удалить?

относительно permissionsController.У меня есть судьба:

def destroy

@permission.destroy

respond_to do |format|
  format.js
end

end

Есть какие-нибудь мысли по этому поводу?спасибо

1 Ответ

0 голосов
/ 19 октября 2010

Кажется, что идентификатор разрешения в вашем URL-адресе - это не целое число, а имя (или постоянная ссылка) разрешения.

Вы установили что-то вроде

def to_param
  permalink
end

в вашей модели разрешения?

Возвращенная ошибка говорит о том, что @permission имеет значение nil (это означает, что разрешение с таким идентификатором не найдено). В вашем действии уничтожения вам нужно получить разрешение с помощью этой постоянной ссылки / имени, например:

def destroy
  @permission = Permission.find_by_permalink(params[:id])
  @permission.destroy
  respond_to do |format|
    format.js
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...