ユーザーが記事をフォローまたはフォロー解除できるアプリを作成しようとしています。Customer
そのために、Article
との 3 つのモデルを作成しましPin
た。
これらは関係です:
Customer
has_many articles
has_many pins
Article
has_many pins
belongs_to customer
Pins
belongs_to customer
belongs_to article
a は an 内にネストするPin
必要があると思います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
ここで私の2つの質問:
- 現在の関係を削除するフォームを作成するにはどうすればよいですか?
- 私のフォームでは、ボタンの 1 つだけを表示したいと考えています。条件付きで正しいボタンを表示するにはどうすればよいですか?