尝试从“编辑”操作视图中传递ID
在我的表格上
belongs_to :video
当用户在视频的编辑表单上时,我希望他们能够编辑属于视频的海报(has_many:海报)
在视频控制器的编辑操作中,我添加了
Rails.application.routes.draw do
resources :posters
resources :people
resources :profiles
devise_for :users
resources :videos do
resources :posters
end
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
root 'home#index'
当用户点击新海报链接时,他们会被定向到新海报并可以上传图片
当我创建记录时 - 它没有传递视频的ID。
我的模型中有海报
SELECT table1.id
FROM (
SELECT id, sum(column) as A
FROM table1
GROUP BY id
) a1
Left join (
SELECT id,
sum(column) as B
FROM table 2
GROUP BY Id
) a2
on table1.id=table2.id
.
.
.
.
Left join (
SELECT id, sum(column) as G
FROM table 7
GROUP BY id
) g1
on table1.id=table7.id
Having or where A+B - (C+D+E+F+G) >0
所以我不知道如何安全地将我所拍摄的视频编辑的ID传递给新创建的海报。
表海报 ID poster_url video_id< - 这应该具有我刚编辑的视频的ID ...
路线:
if (isset($_POST['no_peserta_mhs_2015'])) {
$colname_rec_mhs_2015 = $_POST['no_peserta_mhs_2015'];
}
mysql_select_db($database_connect, $connect);
$query_rec_mhs_2015 = sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = %s or nama_mhs_2015 like %s ", GetSQLValueString($colname_rec_mhs_2015, "text"), GetSQLValueString($colname_rec_mhs_2015, "text"));
答案 0 :(得分:2)
如果海报总是属于某个视频,那么我就会对该路线进行嵌套。您可以在config/routes.rb
文件中执行此操作,而不是:
Rails.application.routes.draw do
resources :videos
end
你可以做到
Rails.application.routes.draw do
resources :videos do
resources :posters
end
end
这意味着在Poster
的每个控制器操作中,您都可以访问父Video
个对象。例如,Poster
show动作现在会出现在网址/videos/{video_id}/posters/{poster_id}
中。我会在进行更改后运行rake routes
来比较之前的路线与嵌套后的路线。
总结如何更改代码,将new_poster_path
更改为new_video_poster_path( @video.id )
。然后,更改PostersController
,以便new和create操作看起来像这样:
def new
@poster = Poster.new
end
def create
@video = Video.find( params[:video_id] )
@poster = @video.posters.new( my_permitted_params )
...
end
请注意,这仅适用于您正在修改Video
的情况,因为如果您正在创建它,那么您没有id
传递给该路线。
答案 1 :(得分:1)
我采用了不同的方法而不是嵌套路线。
我将链接中的参数传递给表单,将其作为值引用,然后通过:
<%= link_to 'Add poster', new_poster_path(movie: @video.id), class: 'btn' %>
在表单页面上:
<%= f.input :video_id, as: :hidden, input_html: {value: params[:movie]}%>