这与我的其他问题有些相关,但略有不同。
所以在每个页面上,我都有一个Add Image按钮,弹出一个带有表单的模态窗口,用于添加带有标题和描述的图像。但是,我不确定如何使它自动使用它所在页面的page_id。
目前的表格是:
<%= form_for @image do |f| %>
<%= f.label 'Image URL:' %>
<%= f.text_field :source %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.submit %>
<% end %>
有没有办法在创建图像时将image.page_id设置为该页面的id?
答案 0 :(得分:2)
您可以使用嵌套路线,因此在您的routes.rb中,您将拥有:
resources :pages do
resources :images
end
然后你有url助手来创建一个添加链接:
<%= link_to 'add image', new_page_image_path(@page) %>
它会创建一个类似/pages/:page_id/images/new
的路径,该路径被路由到控制器new
的操作ImagesController
,其中参数[:page_id]设置为@page.id
在ImagesController
中将新操作扩展到
def new
@image= Image.new(page_id: params[:page_id])
end
并在表单中放置一个隐藏的page_id
以在编辑期间保留它:
<%= form_for @image do |f| %>
<%= f.hidden_field :page_id %>
...
<%= f.submit %>
<% end %>
您可以使用任何JS将链接转换为显示图像格式的模型窗口。