Что я пытаюсь сделать: я новичок в программировании на ruby.То, что я пытался сделать - это иметь список категорий сообществ, связанных с публикациями в этих сообществах, в моем раскрывающемся списке в виде ссылок в макете приложения.После того, как ссылки появятся в моем раскрывающемся списке ссылок, я хочу перейти к тому сообществу, в котором отображаются все сообщения, связанные с ним.
Что происходит в настоящее время? Я пробовал несколько разных вещей и искал, но не мог найти кое-что из того, что я пытался сделать, хотя я знаю, что это можно сделать.Прямо сейчас, хотя мои ссылки загружаются в подменю в макете моего приложения.когда я нажимаю на ссылку или любые другие ссылки, я получаю ошибку no method.Вот мой код ниже.
Спасибо за предоставленную помощь.
Мой фрагмент кода в application.html.erb
<li class="dropdown">
<a href="#" class="dropdown-toggle" data toggle="dropdown">Communities</a>
<ul class="dropdown-menu">
<% @communities.each do |lnk| %>
<li><%= link_to lnk.name, community_path(lnk.id) %></li>
<% end %>
</ul>
</li>
<li><%= link_to "Blog", root_path %></li>
Вот мой контроллер сообщества
class CommunitiesController < ApplicationController
attr_accessor :name, :id
def index
@communities = Community.all.order('name DESC')
render 'posts/index'
end
def show
@communities = Community.find(params[:id])
#render 'communities/show'
end
private
def community_params
params.require(:community).permit(:name)
end
end
Вот мой пост-контроллер Я добавил свою переменную экземпляра для сообществтам снова, так как он продолжал выдавать сообщение об ошибке
class PostsController < ApplicationController
before_filter :authenticate_user!, except: [:idex, :show]
def index
@posts = Post.all.order('created_at DESC')
@communities = Community.all.order('name DESC')
end
def new
@post = Post.new
end
def create
# we will first create the post
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(params[:post].permit(:title, :body))
redirect_to @post
else
render 'edit'
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:title, :body)
end
end
Вот моя модель
class Community < ApplicationRecord
belongs_to :post
has_many :post
end
здесь моя модель для сообщения
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
validates :title, presence: true, length: {minimum: 5}
validates :body, presence: true
end
Вот мои маршруты
Rails.application.routes.draw do
devise_for :users
resources :posts do
resources :comments
end
resources :communities
root "posts#index"
get '/about', to: 'pages#about'
end
Вот мой вывод html
<li class="dropdown">
<a href="#" class="dropdown-toggle" data toggle="dropdown">Communities</a>
<ul class="dropdown-menu">
<li><a href="/communities/6">Technology</a></li>
<li><a href="/communities/4">Sports</a></li>
<li><a href="/communities/5">Science</a></li>
<li><a href="/communities/3">Politics</a></li>
<li><a href="/communities/2">Local News</a></li>
<li><a href="/communities/1">Art</a></li>
</ul>
</li>
<li><a href="/">Blog</a></li>
<li><a href="/about">About</a></li>