1

这与我的另一个问题有些相关,但略有不同。

因此,在每一页上,我都有一个“添加图像”按钮,它会弹出一个带有表单的模式窗口,用于添加带有标题和描述的图像。但是,我不确定如何拥有它,以便它自动使用它所在页面的 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?

4

1 回答 1

2

您可以使用嵌套路由,因此在您的 routes.rb 中您将拥有:

resources :pages do
  resources :images
end

然后你有 url helpers 来创建一个添加链接:

<%= link_to 'add image', new_page_image_path(@page) %>

它创建了一个路径,类似于将params[:page_id] 设置为的控制器/pages/:page_id/images/new操作的路径newImagesController@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 将链接转换为显示图像形式的模型窗口。

于 2013-05-28T21:00:03.470 回答