4

我试图在控制器方法中传递参数,format.html如下所示:

def create
  @doc = Doc.new(params[:doc])
  respond_to do |format|
    if @doc.save
      format.html { redirect_to share_url(@doc.user.ftp, @doc) }
    else
      format.html { render "new", :locals => { :template => @doc.template_id } }
    end
  end
end

我收到一个无方法错误,告诉我我正在向:template局部变量中发送正确的参数:

local_assigns {:template=>4}

有什么我想念的东西让它工作吗?它应该重定向到doc#new动作,但它会doc#index改为。有任何想法吗?

4

1 回答 1

8

在控制器中使用此语法:

render "new", :locals => { :template => @doc.template_id }

意味着您正在渲染new.html.erb模板,而不是部分。您无法将局部变量传递给非局部视图。您应该做的是调用render "new",并根据需要@doc在该视图中引用。

于 2013-07-08T06:21:46.287 回答