在 ruby 中建立一个论坛,以获得乐趣和学习语言。首先,我了解基本结构,但我对服务器端语言非常陌生,主要是前端开发人员。我正在努力扩展我的技能。
我不一定希望您为我编写代码(尽管代码示例将不胜感激),但我希望您向我解释为什么我的代码很糟糕,我确定是这样,并告诉我如何解决它。只需要一些帮助来了解如何将两个模型关联在一起以及如何在控制器中建立这种关系。
谢谢!
这是我的两个模型:
岗位型号:
class Post < ActiveRecord::Base
belongs_to :topic
end
主题模型:
class Topic < ActiveRecord::Base
belongs_to :user
has_many :posts
end
现在控制器来了。这些是我真正迷路的地方。我让主题创建工作,我试图复制我在主题控制器中所做的事情。我几乎知道它不会起作用,但我有点迷路了。这里是...
主题控制器
class TopicsController < ApplicationController
def index
@topics = Topic.order("sticky desc")
end
def show
@topic = Topic.find(params[:id])
end
def new
@topic = Topic.new
end
def create
@topic = Topic.new(topic_params)
@topic.user = current_user
if @topic.save
redirect_to @topic, notice: "Created topic."
else
render :new
end
end
def edit
@topic = Topic.find(params[:id])
end
def update
@topic = Topic.find(params[:id])
if @topic.update_attributes(topic_params)
redirect_to topics_url, notice: "Updated topic."
else
render :edit
end
end
def destroy
@topic = Topic.find(params[:id])
@topic.destroy
redirect_to topics_url, notice: "Destroyed topic."
end
private
def topic_params
params.require(:topic).permit(:name, :post_content, :sticky)
end
end
职位控制器
class PostsController < ApplicationController
def index
@posts = Post.order("sticky desc")
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
@post.user = current_user
if @post.save
redirect_to topics_url, notice: "Post created."
else
render :new
end
end
def edit
@post = Post.find(params[:id])
end
def update
if @post = Post.find(params[:id])
redirect_to topics_url, notice: "Updated post."
else
render :edit
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to topics_url, notics: "Post removed."
end
private
def post_params
params.require(:posts).permit(:content, :created_at, :updated_at)
end
end
我不认为这些观点是一个问题,一旦我弄清楚控制器逻辑,我会发布一个新问题。
同样,任何帮助将不胜感激。请不要说“你真的应该从头开始”,或者“你经验不够,先学这个”,因为我知道我没有经验,所以我在这里问大家。
你可以展示你将如何编码,或者只是向我解释需要实现的逻辑,无论是哪一种,都值得赞赏!
非常感谢大家!
编辑
我实际上遇到了路由错误。所以显然路由是错误的,不确定它是否与控制器代码有关:这是具体的错误。(当我尝试点击某个主题时会发生这种情况(我可以编辑和销毁主题,只是不要点击它们)
Routing Error
No route matches {:action=>"new", :controller=>"posts"}
Try running rake routes for more information on available routes.
到目前为止,这是我的路线文件:
Forum::Application.routes.draw do
get 'signup', to: 'users#new', as: 'signup'
get 'login', to: 'sessions#new', as: 'login'
get 'logout', to: 'sessions#destroy', as: 'logout'
resources :sessions
resources :topics do
resources :posts
end
resources :users
root to: 'topics#index'
end