0

所以我在模型中有一个电子邮件字段。

我想要这个模型中的一个路径,其中一个字段显示在视图中,当我输入一个电子邮件地址,并且该地址与现有模型匹配时,它会被删除。用于退订时事通讯。

像这样的东西:

newsletter_controller.rb

def unsubscribe(email)
  @newsletter = Newsletter.where(:email => email)
  @newsletter.destroy
end

在视图中:

simple_form_for @newsletter do |f|
 f.input :email, method: delete
end

我不知道视图应该如何在 Rails 方式中工作。

4

1 回答 1

1

config/routes.rb中,我想您已经为以下resources :newsletters 添加了一条路线unsubscribe

resources :newsletters do
   post 'unsubscribe', :on => :member
end

检查rake routes,您应该已经获得了unsubscribe_newsletter_path与 POST 动词一样的路由路径。

现在,在您看来:

=form_for(:newsletter, :url => unsubscribe_newsletter_path) do |f|
   =f.label :email
   =f.text_field :email
   =f.submit "Unsubscribe"

(根据 simple_form 的语法更改它)
现在,在newsletter_controller.rb(它应该是 newsletter*s*_controller)中,将方法添加为:

def unsubscribe
  @newsletter = Newsletter.where(:email => params[:newsletter][:email])
  @newsletter.destroy if @newsletter
  redirect_to root_path
end

我希望它有所帮助。评论它给你错误或不起作用的地方。我会尽力提供帮助。

祝你好运。:)

于 2013-04-28T17:12:56.867 回答