Forum Series Part 2: Routes Discussion
Chris, I don't have the view folders for forum_threads. Did you manually create those? Or did I miss a step?
I did actually. I ended up deciding to leave out a few pieces because they were ending up making the episodes really long without a lot of useful/interesting things.
Instead, I decided to put everything up on the Github repo so it you can still review those parts! https://github.com/excid3/g...
Hello! I have lots of questions :P I'm trying to nest 3 routes Model1Ctrl > Model2Ctrl > Model3Ctrl and wish to access a model3Ctrl each loop on Model1Ctrl show page. How should i do it? I'm losing it, please help :P
<3 Gorails!
this is off topic, but I am struggling with a problem. How do I use form_for to create a new instance of a class with namespaced routes? I have :
resources :recipes do
resources :comments, only: [:new, :create], module :recipes
resource :like, module :recipes
end
form_for(@recipe, @comment) doesn't work, in addition to other variations. I am stumped.
You're really close. To create a form for a new comment on a recipe, you would do "form_for([@recipe, @comment])"
To create a new like on a recipe comment, you would do "<%= form_for([@recipe, @comment, @like]) do |f| %>"
Hello!
This is embarrassing but here is my problem. After clicking the button to reply with a post in a thread, instead of getting a url like
http://localhost:3000/forum_threads/4#forum_post_16
I get
http://localhost:3000/forum_threads/4/forum_posts
and then the error says:
ActionController::RoutingError at /forum_threads/4/forum_posts
uninitialized constant ForumThreads
Any hint? Below the forum_posts_controller.rb file
Thanks for the great screencasts :)
class ForumThreads::ForumPostsController < ApplicationController
before_action :authenticate_user!
before_action :set_forum_thread
def create
@forum_post = @forum_thread.forum_posts.new forum_post_params
@forum_post.user = current_user
if @forum_post.save
redirect_to forum_thread_path(@forum_thread, anchor: "forum_post_#{@forum_post.id.to_s}"), notice: "exito en postear"
else
redirect_to @forum_thread, alert: "no se pudo postear"
end
end
private
def set_forum_thread
@forum_thread = ForumThread.find(params[:forum_thread_id])
end
def forum_post_params
params.require(:forum_post).permit(:body)
end
end
http://localhost:3000/forum_threads/4/forum_posts is the URL you want to POST to when creating a new forum post. This is what the form's action will point to so that part looks correct.
Your code inside the controller looks correct as well and should redirect back to the forum thread path.
"uninitialized constant ForumThreads" sounds like maybe your module on the controller specified might be with a different spelling? Was it singular :forum_thread in your routes? That would mean you need to do class ForumThread::ForumPostsController if so.
I'm getting an error "COULD NOT FIND USER WITH 'ID'=". I'm not using the Devise Gem but I have ":set_user" method defined in my application controller as "@user = User.find(params[:user_id])" instead of ":authenticate_user!". I have the nested routes just like the video. I don't understand what's wrong here. I appreciate any help.
Well i made a new method called "require_same_user" in my application_controller and defined it as
if !logged_in?
flash[:danger] = "You must be logged in to do that."
redirect_to root_path
end
That seemed to fix it.
Why touch the controller files instead 'rails g controller forum_threads' ?
which would save as some trouble with creating the view files also...