2014-09-13 68 views
0

我想在一个以上的变量传递到渲染声明将呈现_form部分,采用内作出以下几点:模态 - 如何正确的变量传递给JavaScript

$(document).ready(function() { 
    $('#contact_modal').click(function(event){ 
    $("#modal-window").html("<%= escape_javascript(render 'contacts/form', new_contact: Contact.new) %>"); 

我试过路过在两个变量中通过执行以下操作:

new_contact: @contact, new_case: @case 

但它似乎没有识别new_contact和new_case变量。我如何传递他们,然后在simple_form_for中使用它们?

编辑: 我无法得到它与以下设置(情况的has_many触点)工作:

的routes.rb

resources :contacts 

resources :cases do 
    resources :contacts, :shallow => true 
end 

contacts_controller.rb

def new 
    if params[:case_id] 
     @case = Case.find(params[:case_id]) 
     @contact = @case.contacts.build 
     @create_case_contacts_array = [@case, @contact] 
    else 
     @contact = Contact.new 
     @create_case_contacts_array = @contact 
    end 
    end 

    def create 
    if params[:case_id] 
     @case = Case.find(params[:case_id]) 
     @contact = @case.contacts.build(params[:contact]) 
    else 
     @contact = Contact.new(contact_params) 
    end 

    @contact.user = @user 
    ... 
    end 

指数.html.erb(其中模态被调用)

$("#modal-window").html("<%= escape_javascript(render :partial => "contacts/form", :locals => { :new_case => @case, :new_contact => @contact}) %>"); 

_form.html.erb

<%= simple_form_for(new_case, new_contact) do |f| %> 
. 
. 
. 
<%= f.button :submit %> 

为什么没有我的情况下/ 1 /联系人页面呈现(联系人的指数)?我究竟做错了什么?它与我在渲染模态的index.html.erb行有关。我收到以下错误:

undefined method `model_name' for NilClass:Class 

回答

0

找出问题所在。

我只是没有通过我的contacts_controller.rb中的索引动作传递@contact。新动作从来没有被调用,因为我通过index.html.erb文件中的模式手动调用它。

0
render :partial => "person", :locals => { :name => "david" ,:surname => "anderson"} 

,所以这是它如何工作的,你的情况: -

$("#modal-window").html("<%= escape_javascript(render :partial => "contacts/form", :locals => { :new_contact => @contact ,:new_case => @case}) %>"); 

现在你可以在你的形式很容易只有@contact and @case are present

访问 new_contactnew_case