2014-04-21 213 views
0

我在頁面上有一個「加入」按鈕,當點擊時,用戶joins模型。類似於按鈕。在我的join.js.erb文件中,我在用戶加入後呈現部分內容,如部分顯示不加入按鈕以及他們現在可以評論模型的表單。這是它的外觀。rails ajax渲染表格

*join.js.erb* 

$("#restaurant-<%= @restaurant.id %>").html("<%= escape_javascript render :partial => 'restaurants/join_button', :locals => { :restaurant => @restaurant } %>"); 
$("#restaurantCommentForm").html("<%= escape_javascript render :partial => 'restaurants/comments_form', :locals => { :restaurant => @restaurant } %>"); 

下面是評論部分

<% if current_user.voted_on?(restaurant) %> 
    <div class="section-wrapper section-wrapper-two"> 
    <h4 class="text-muted text-center" style="margin: 0 0 10px;">Write a review</h4> 

    <%= render :partial => "comments/form", :locals => { :comment => @comment } %> 
    </div> 
<% end %> 

所以JS文件被渲染的部分,這是渲染另一部分,無論是當地人。

我得到的錯誤就是First argument in form cannot contain nil or be empty

ActionView::Template::Error (First argument in form cannot contain nil or be empty): 
    1: <%= form_for([@commentable, @comment]) do |f| %> 

我想這是我在comment_partial當地人的問題。有誰知道這個適當的解決方案? 感謝

我已經試過這已經在comments_form部分

<%= render :partial => "comments/form", :locals => { :restaurant => @commentable, :comment => @comment } %> 
+0

您在哪裏設置了@ @ commentable'和'@ comment'的值? –

+0

在控制器中。 '@commentable = @ restaurant',因爲這裏的可評論模型是餐廳模型。 '@comment = Comment.new' –

回答

1

按照聊天會話,@comment@commentable實例變量並沒有在行動join設置。因此,該錯誤First argument in form cannot contain nil or be empty

def join 
    begin 
     @vote = current_user.vote_for(@restaurant = Restaurant.friendly.find(params[:id]))  
     @commentable = @restaurant ## Set the value 
     @comment = Comment.new ## Set the value 
     respond_with @restaurant, :location => restaurant_path(@restaurant) 
    rescue ActiveRecord::RecordInvalid 
     redirect_to restaurant_path(@restaurant) 
    end 
    end 
+0

與表單相同的錯誤不能包含零或爲空 –

+0

讓我們在聊天上進行調試http://chat.stackoverflow.com/rooms/48530/ror –