0

データを保存するフォームがありますが、間違った 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 にリダイレクトされるのはなぜですか? 私のコメントはデータベースに保存されます。

ありがとうございました

4

1 に答える 1

1

localhost:3000/users/1/styles/1コメントを作成した後に戻りたい場合は、変更する必要があります

  if @comment.save
    redirect_to @commentable, notice: "Comment created."
  else

  if @comment.save
    redirect_to [User.find(params[:user_id]), @commentable], notice: "Comment created."
  else

編集:現在のユーザーではなく、スタイルを所有するユーザーを使用する必要があります

于 2013-09-16T02:50:46.647 に答える