データを保存するフォームがありますが、間違った URL にルーティングされます。
私のフォームが
ローカルホスト:3000/users/1/styles/1
フォームを送信すると、次のようにリダイレクトされます。
ローカルホスト:3000/styles/1
そして、エラーが発生します:
ID のないユーザーが見つかりませんでした
ビュー/コメント/_form.html.erb
<%= form_for [@commentable, @comment] do |f| %>
<%= f.text_area :content, rows: 3 %>
<%= f.submit %>
<% end %>
styles_controller.rb
def show
@user = User.find(params[:user_id])
@style = @user.styles.find(params[:id])
@commentable = @style
@comments = @commentable.comments
@comment = Comment.new
end
コメント_コントローラー.rb
before_filter :get_commentable
def new
@comment = @commentable.comments.new
end
def create
@comment = @commentable.comments.new(params[:comment])
@comment.user = current_user
if @comment.save
redirect_to @commentable, notice: "Comment created."
else
render :new
end
end
private
def get_commentable
@commentable = params[:commentable].classify.constantize.find(commentable_id)
end
def commentable_id
params[(params[:commentable].singularize + "_id").to_sym]
end
ルート.rb
resources :styles do
resources :comments, :defaults => { :commentable => 'style' }
end
他に必要な情報があれば教えてください。別の URL にリダイレクトされるのはなぜですか? 私のコメントはデータベースに保存されます。
ありがとうございました