Обсуждение принадлежит проекту. Когда я пытаюсь изменить обсуждение, я получаю следующую ошибку. param is missing or the value is empty: discussion
на следующий кусок кода в discussions_controller:Rails: параметр отсутствует или значение пуст: обсуждение
def discussion_params
params.require(:discussion).permit(:title, :description)
end
Я не могу видеть, что случилось с этим же. Что-то не так с моей маршрутизацией, или я что-то упускаю?
discussions_controller.rb
class DiscussionsController < ApplicationController
before_action :find_project, expect: [:destroy]
def new
@discussion = Discussion.new
end
def create
@discussion = @project.discussions.build(discussion_params)
if @discussion.save
redirect_to new_project_discussion_path(@project)
end
end
def edit
@discussions = @project.discussions.find(discussion_params)
end
def update
if @discussions.update_attributes(discussion_params)
redirect_to new_project_discussion_path
else
render "edit"
end
end
def destroy
@discussions.destroy
redirect_to new_project_discussion_path
end
private
def discussion_params
params.require(:discussion).permit(:title, :description)
end
def find_project
@project = Project.find(params[:project_id])
end
end
projects_controller.rb
class ProjectsController < ApplicationController
def index
@projects = Project.all
end
def show
end
def new
@projects = Project.new
end
def create #no view
@projects = Project.new(project_params)
if @projects.save
redirect_to projects_path, :notice => "Your project was sent!"
else
render "new"
end
end
def edit
@projects = Project.find(params[:id])
end
def update #no view
@projects = Project.find(params[:id])
if @projects.update_attributes(project_params)
redirect_to projects_path, :notice => "Your project has been updated."
else
render "edit"
end
end
def destroy #no view
@projects = Project.find(params[:id])
@projects.destroy
redirect_to projects_path, :notice => "Your project has been deleted."
end
private
def project_params
params.require(:project).permit(:title, :description)
end
end
(обсуждение) _form.html.erb
<%= form_for [@project, @discussion] do |f| %>
<div class="container">
Project: <%= @project.title %> <%= link_to "Go back?", projects_path %>
<hr>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :description %>
<%= f.text_area :description, class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Submit discussion", class: "btn btn-primary" %>
</div>
</div>
<% end %>
(обсуждение) edit.html.erb
<%= render "form" %>
(дискуссии) new.html.erb
<div class="container">
<div class="page-header">
<h1>Discussions<small> Discuss the project.</small></h1>
</div>
</div>
<%= render "form" %>
<% if [email protected]? %>
<% for item in @project.discussions %>
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<%= item.title %>
</div>
</div>
<div class="panel-body">
<p>
<%= item.description %> <br>
<%= link_to "Comment", new_discussion_comment_path(item) %>
<%= link_to "Delete", item, :method => :delete %>
<%= link_to "Edit", edit_project_discussion_path(@project, item) %> |
</p>
</div>
</div>
<% end %>
<% end %>
А вот мои маршруты для обеих дискуссий и проектов.
project_discussions GET /projects/:project_id/discussions(.:format) discussions#index
POST /projects/:project_id/discussions(.:format) discussions#create
new_project_discussion GET /projects/:project_id/discussions/new(.:format) discussions#new
edit_project_discussion GET /projects/:project_id/discussions/:id/edit(.:format) discussions#edit
project_discussion GET /projects/:project_id/discussions/:id(.:format) discussions#show
PATCH /projects/:project_id/discussions/:id(.:format) discussions#update
PUT /projects/:project_id/discussions/:id(.:format) discussions#update
DELETE /projects/:project_id/discussions/:id(.:format) discussions#destroy
projects GET /projects(.:format) projects#index
POST /projects(.:format) projects#create
new_project GET /projects/new(.:format) projects#new
edit_project GET /projects/:id/edit(.:format) projects#edit
project GET /projects/:id(.:format) projects#show
PATCH /projects/:id(.:format) projects#update
PUT /projects/:id(.:format) projects#update
DELETE /projects/:id(.:format) projects#destroy
Какие параметры действительно размещены (из ваших журналов сервера)? Прямо сейчас отсутствует ключ обсуждения. – ptd
Хм, когда я нажимаю на редактирование, я получаю это сообщение в терминале. 'ActionController :: ParameterMissing (параметр отсутствует или значение пуст: обсуждение): app/controllers/discussion_controller.rb: 38: in 'discussion_params' app/controllers/discussion_controller.rb: 17: in 'edit'' – roguerat
можете ли вы установить драгоценный камень отладчика pry и поставить binding.pry перед paramsrequire? –