首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套资源链路误差

嵌套资源链路误差
EN

Stack Overflow用户
提问于 2015-10-05 10:13:40
回答 2查看 36关注 0票数 0

我有麻烦了。我有三种模式:论坛主题后论坛

代码语言:javascript
复制
 has_many :topics, dependent: :destroy

主题

代码语言:javascript
复制
  belongs_to :forum
  has_many :posts, dependent: :destroy

Post belongs_to :主题

论坛控制器

代码语言:javascript
复制
class ForumsController < ApplicationController

def index
  @forums = Forum.all
end

def show
  @forum = Forum.find(params[:id])
  @topics = Topic.all
end

end

主题控制器

代码语言:javascript
复制
class TopicsController < ApplicationController

def create
    @forum = Forum.find(params[:forum_id])
    @topic = @forum.topics.create(topic_params)
    if @topic.save
        redirect_to root_path
    end
end

def new
    @forum = Forum.find(params[:forum_id])
    @topic = Topic.new
end

def show
@forum = Forum.find(params[:forum_id])
@topics = Topic.find(params[:id])

end

private
def topic_params
  params.require(:topic).permit(:name, :created_at, :last_poster_id => current_user.id, :last_post_at => Time.now)
end

结束

代码语言:javascript
复制
 routes.rb 
 resources :forums do
  resources :topics
 end

论坛/展览

代码语言:javascript
复制
- @forum.topics.each do |f|


= link_to f.name, forum_topic_path[@forum, @topic]




 rake routes:
   forum_topics GET    /forums/:forum_id/topics(.:format)                  topics#index
                         POST   /forums/:forum_id/topics(.:format)                  topics#create
         new_forum_topic GET    /forums/:forum_id/topics/new(.:format)              topics#new
        edit_forum_topic GET    /forums/:forum_id/topics/:id/edit(.:format)         topics#edit
             forum_topic GET    /forums/:forum_id/topics/:id(.:format)              topics#show
                         PATCH  /forums/:forum_id/topics/:id(.:format)              topics#update
                         PUT    /forums/:forum_id/topics/:id(.:format)              topics#update
                         DELETE /forums/:forum_id/topics/:id(.:format)              topics#destroy
                  forums GET    /forums(.:format)                                   forums#index
                         POST   /forums(.:format)                                   forums#create
               new_forum GET    /forums/new(.:format)                               forums#new
              edit_forum GET    /forums/:id/edit(.:format)                          forums#edit
                   forum GET    /forums/:id(.:format)                               forums#show
                         PATCH  /forums/:id(.:format)                               forums#update
                         PUT    /forums/:id(.:format)                               forums#update
                         DELETE /forums/:id(.:format)                               forums#destroy

但我错了

代码语言:javascript
复制
No route matches {:action=>"show", :controller=>"topics", :id=>"1"} missing required keys: [:forum_id]

idn如何创建这是嵌套链接..。帮帮我

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-05 11:02:39

下面是如何让它发挥作用的方法:

代码语言:javascript
复制
#config/routes.rb
resources :forums do
   resources :topics
end

#app/models/forum.rb
class Forum < ActiveRecord::Base
   has_many :topics
end

#app/models/topic.rb
class Topic < ActiveRecord::Base
   belongs_to :forum
end

#app/controllers/forums_controller.rb
class ForumsController < ApplicationController
   def show
      @forum  = Forum.find params[:id]
      @topics = @forum.topics
   end
end

#app/views/forums/show.html.erb #-> url.com/forums/5
<% @topics.each do |topic| %>
    = link_to topic.name, forum_topic_path(@forum.id, topic.id)
<% end %>
票数 0
EN

Stack Overflow用户

发布于 2015-10-05 11:10:51

你可以试试这个

代码语言:javascript
复制
resources :forums do
   resources :topics
end

以及在视野中

代码语言:javascript
复制
- @topics.each do |f|
  = link_to f.name, forum_topic_path(f.forum.id, f.id)

在控制器中

代码语言:javascript
复制
def show
  @forum = Forum.find(params[:id])
  @topics = @forum.topics

end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32946078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档