我正在尝试创建一个用户可以关注或取消关注文章的应用程序。为此,我创建了三个模型Customer
,Article
和Pin
。
这些是关系:
Customer
has_many articles
has_many pins
Article
has_many pins
belongs_to customer
Pins
belongs_to customer
belongs_to article
我相信 aPin
必须嵌套在 a 中Article
。我的route.rb
样子是这样的:
resources :articles do
resources :pins, :only => [:create, :destroy]
end
end
在article#index
我有一个创建或破坏关系的表格:
# To create
<%= form_for [article, current_customer.pins.new] do |f| %>
<%= f.submit "Pin" %>
<% end %>
# To destroy which doesn't work because i guess you can't do the form like that
<%= form_for [article, current_customer.pins.destroy] do |f| %>
<%= f.submit "Pin" %>
<% end %>
以下是相应的控制器操作:
def create
@article = Article.find(params[:article_id])
@pin = @article.pins.build(params[:pin])
@pin.customer = current_customer
respond_to do |format|
if @pin.save
format.html { redirect_to @pin, notice: 'Pin created' }
else
format.html { redirect_to root_url }
end
end
end
def destroy
@article = Article.find(params[:article_id])
@pin = @article.pins.find(params[:id])
@pin.destroy
respond_to do |format|
format.html { redirect_to root_url }
end
end
现在在这里我的两个问题:
- 如何创建可以删除当前关系的表单?
- 在我的表单中,我只想显示其中一个按钮。如何有条件地显示正确的按钮?