Я использую вложенные ресурсы.Когда я нажимаю на цель, которая была создана, я получаю эту ошибку:
param is missing or the value is empty: goal
И она направляет меня к строке "params.require ...":
private
def goal_params
params.require(:goal).permit(:text)
end
Я не уверен, что вызывает это.Я могу создать и показать список.Но когда я нажимаю на цель, я получаю эту ошибку.Я новичок в рельсах, и я в своем уме.
Мой взгляд:
<h1>Listing goals</h1>
<table>
<tr>
<th>Text</th>
<th></th>
</tr>
<% @user.goals.each do |goal| %>
<tr>
<td><%= link_to goal.text, user_goals_path(@user, @goal)%></td>
</tr>
<% end %>
</table>
<h2>Add a comment:</h2>
<%= form_for([@user, @user.goals.build]) do |form| %>
<p>
<%= form.text_area :text %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
Мой контроллер:
class GoalsController < ApplicationController
def index
@user = User.find(params[:user_id])
@goal = @user.goals.find(goal_params)
end
def show
@user = User.find(params[:user_id])
@goal = @user.goals.find(:id)
#also tried goal_params and :goal_id instead of :id
end
def new
@user = User.find(params[:user_id])
@goal = @user.goals.new
end
def create
@user = User.find(params[:user_id])
@goal = @user.goals.build(goal_params)
@goal.user = current_user
if @goal.save
redirect_to new_user_goal_path, notice: "Success!~"
else
redirect_to new_user_goal_path, alert: "Failure!"
end
#to root_path
end
private
def goal_params
params.require(:goal).permit(:text)
end
end
Мои маршруты:
Rails.application.routes.draw do
devise_for :users
resources :user do
resources :goals
end
devise_scope :user do
authenticated :user do
root 'home#index', as: :authenticated_root
end
unauthenticated do
root 'devise/sessions#new', as: :unauthenticated_root
end
end
end
Мой show.html.erb:
<p>
<strong>Text:</strong>
<%= @goal.text %>
</p>