У меня есть модель целей с множеством атрибутов.
Как только цель завершена, она отмечается как завершенная при нажатии кнопки, а затем перенаправляется в новую форму, которая может добавить дополнительные атрибуты к цели.модель.
Для меня имело смысл хранить их в целевой модели, так как они всегда связаны только с целью, однако я не могу заставить ее работать правильно, так как всегда получаю, что param отсутствует илизначение пустое: цель.
Параметры цели используются в качестве стандартных параметров CRUD.
Цель_представления_параметры используются после достижения цели.
Возможно ли это сделатьвне действия «обновление»?
Контроллер:
class GoalsController < ApplicationController
before_action :authenticate_user!, except: [:index, :show, :completedgoals]
before_action :set_goal, only: [:show, :edit, :update, :destroy, :mark_completed, :goal_completed ]
def goal_completed
@authorize
if @goal.update(goal_review_params)
format.html { redirect_to @goal, notice: 'Goal review was successfully updated.' }
format.json { render :show, status: :ok, location: @goal }
else
format.html { redirect_to goal_completed_goal_path(@goal) }
format.json { render json: @goal.errors, status: :unprocessable_entity }
end
end
private
def set_goal
@goal = Goal.find(params[:id])
end
#category_ids:[] needs to be added back to goal_params when they're added back in
def goal_params
params.require(:goal).permit(:goalname, :goaldesc, :goalhow, :goalwhy, :goalreward, :goalduedate, :goalstatus )
end
def goal_review_params
params.require(:goal).permit(:goaldifficult, :goallearned, :goalnext)
end
Просмотр:
<%= form_for (@goal) do |form| %>
<div class="col-md-12 goalform">
<%= form.label :goaldifficult, value: "Name your Goal" %><br>
<%= form.text_field :goaldifficult, :rows => 2, style: 'width:80%;',
placeholder: "...'" %>
</div>
<div class="col-md-12 goalform">
<%= form.label :goallearned, value: "Name your Goal" %><br>
<%= form.text_field :goallearned, :rows => 2, style: 'width:80%;',
placeholder: "...'" %>
</div>
<div class="col-md-12 goalform">
<%= form.label :goalnext, value: "Name your Goal" %><br>
<%= form.text_field :goalnext, :rows => 2, style: 'width:80%;',
placeholder: "...'" %>
</div>
<div class="col-md-12 goalform">
<%= form.submit class:"btn btn-primary" %>
</div>
Маршруты:
resources :goals do
...
member do
get 'goal_completed', to: 'goals#goal_completed', as: 'goal_completed'