我正在为两个相关模型创建一个嵌套表单视频,它们也是嵌套资源我想创建一个嵌套表单。每个播放列表有许多视频,每个视频属于一个播放列表。他们都有标题和描述的属性。转到new_playlist_video_path将导致播放列表的标题和描述被放置到视频的表单字段中。
* * * *更新当我访问new_playlist_video_path(播放列表)时,视频表单呈现,但控制器认为我在playlist#update中,并向播放列表路径发送补丁请求。
路线
resources :playlists do
resources :videos
end
我的控制器
before_action :set_playlist, only: %i[new edit update create]
# GET /videos/new
def new
@video = @playlist.videos.build
end
private
def set_playlist
@playlist = Playlist.find(params[:playlist_id])
end
#新
视频
<%= form_for([@video, @playlist], url: playlist_videos_path, class: "contents") do |form| %>
<% if @video.errors.any? %>
<div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
<h2><%= pluralize(@video.errors.count, "error") %> prohibited this video from being saved:</h2>
<ul>
<% @video.errors.each do |error| %>
<li><%= error.full_message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="my-5">
<%= form.label :title %>
<%= form.text_field :title, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
</div>
<div class="my-5">
<%= form.label :description %>
<%= form.text_area :description, text: nil , rows: 4, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
</div>
<div class="inline">
<%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium" %>
</div>
<% end %>
我可以改变视频的属性,但这似乎是太多的工作,因为我将不得不重写验证,测试和大量的HTML。如何让我的视频表单不显示它所属的模型的标题和描述?
我的表单错了,它应该是
<%= form_for([@playlist, @video, ], class: "contents") do |form| %>
~~~ form contents