Я новичок в рельсах и пытаюсь создать форум. На форуме много тем, темы принадлежат форуму и имеют много микросообщений, а микросообщения принадлежат как темам, так и пользователям. Однако, что бы я ни пытался, сообщения не будут созданы. В настоящее время, когда я пытаюсь опубликовать сообщение, я получаю сообщение об ошибке маршрутизации "Нет маршрута, соответствующего [GET] "/topics""
Мой файл route.rb:
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :microposts, only: [:create, :destroy]
resources :forums, only: [:index, :show]
resources :topics, only: [:show]
_micropost_form.html.erb
<%= form_for(@micropost) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.hidden_field :topic_id, value: @topic.id %>
<%= f.hidden_field :user_id, value: current_user.id %>
<%= f.text_field :summary, placeholder: "One-line summary..." %>
<%= f.text_area :content, placeholder: "Compose a new post..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
microposts_controller.rb
class MicropostsController < ApplicationController
before_action :signed_in_user, only: [:create, :destroy]
before_action :correct_user, only: :destroy
def create
#@topic = Topic.find_by_id(params[:topic_id])
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = "Your solution has been posted!"
redirect_to topic_path(@topic)
else
redirect_to topic_path(@topic)
end
end
def destroy
@micropost.destroy
redirect_to root_url
end
private
def micropost_params
params.require(:micropost).permit(:summary, :content, :user_id)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
end
Как видите, я закомментировал первую строку в моей функции создания, потому что безрезультатно пытался опубликовать сообщение на основе отношения микросообщения к теме. Заранее спасибо и дайте мне знать, если я опубликую больше кода, это поможет!