2013-04-28 34 views
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的方式工作。

回答

1

config/routes.rb,我想你有resources :newslettersunsubscribe添加路線如下:

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(它應該是通訊* S * _controller),添加方法如下:

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

我希望它能幫助。評論與它給你錯誤或不工作的地方。我會盡力幫忙。

祝你好運。 :)

+0

會嘗試告訴你,但正如我看到它會工作:) – 2013-04-28 17:35:48

+0

耙路線說: '/通訊/:id/unsubscribe' 這應該不是通訊/退訂? – 2013-04-29 08:21:21

+0

@RailsBeginner不!嘗試將路由更改爲'發佈'取消訂閱',:on =>:collection'。 :) – kiddorails 2013-04-29 11:45:04