将param传递给partial
更新
我开始认为这是不可能的。 如果它是一个链接而不是一个部分我可以传递一个参数,但因为它是一个部分我不能给我的forms:来自该索引的各个微缩模型的id。 听起来不错吗? 我可能不得不考虑另一种方法来做我的弹出窗口?
我正在使用以下代码在弹出窗口中启动表单:
$('.open-popup-link').magnificPopup({ type:'inline', midClick: true // Allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source in href. });
它启动的表单开始
{ :class => "form-horizontal"} ) do |f| %> current_user.id %> @miniature_id %>
它在我的@miniature show视图中工作正常,但我现在正试图让它在索引上工作。
控制器有
def set_collection @miniature_id = params[:id] @collection = Collection.new(miniature: @miniature) end
所以它期待一个[:id] param。 在id为miniature.id
的索引中,但是我找不到将miniature.id
传递给params的方法。
Miniatures索引操作如下
def index @search = Miniature.search(params[:q]) @search.sorts = 'name ASC' if @search.sorts.empty? @miniatures = @search.result.uniq.paginate(page: params[:page]) end
tiny.id DOES在索引页面上工作,因为它被放置在will_paginate使用的@miniatures部分中。 如果我能展示微型。那么我肯定可以把它传递给表格吗?
我尝试了以下内容
但我无法找到合适的人选。
渲染部分,不会调用关联的控制器动作。 因此,您需要通过与页面匹配的操作定义页面中使用的所有对象以及插入到该页面中的部分内容。
所以如果控制器有动作:
def show @texts = ['foo','bar'] end
该观点包括:
<%= @texts.join(' ') %>
<%= render 'some/partial' %>
一些部分可以包含这个:
<%= @texts.first %>
控制器操作中定义的@texts可用于主页和部分。
部分声明后的哈希允许您将局部属性传递给部分。 它不会生成将传递给控制器的参数。
所以你可以在视图中这样做:
<%= render 'some/partial', locals: {something: texts.first}
然后在部分:
<%= something %>
在这两个例子中,输出将是:
foo bar
foo
这只是刮擦表面,我建议你看看Rails指南:Rails中的布局和渲染
您应该查看有关将变量传递到部分模板的Rails指南 。 特别是,您希望将其显式设置为partial,并命名您的局部变量hash。 如果您发布的set_collection
控制器操作正在呈现您的第一个视图,那么您将拥有一个@miniature_id
变量。 因此,您的渲染调用应该是:
<%= render partial: 'collections/pop_form', locals: {id: @miniature_id} %>