2014-12-02 37 views
-1

我已經在我的控制下鍵/值對應該是最後一個參數嗎?語法錯誤在用戶控制器Ruby on Rails的

@user_party = UserParty.request(:start_date => params[:start_date], :start_time => params[:start_time]), current_user, @friend) 

但我得到的錯誤:語法錯誤,意外 '',期待=> ... AMS [:START_TIME] CURRENT_USER,@friend)...^

我的全控制器

def create 
    if params[:user_party] && params[:user_].has_key?(:friend_id) 
     @friend = User.find(params[:user_party][:friend_id]) 
     @user_party = Userparty.request({:start_date => params[:start_date], :start_time => params[:start_time]}, current_user, @friend) 
      respond_to do |format| 
       if @user_party.new_record? 
        format.html do 
         flash[:error] = "There was a problem creating that friend request." 
         redirect_to user_path(@friend) 
        end 
        format.json {render json: @user_party.to_json} 

       else   
        format.html do 
         flash[:success] = "Userparty request sent" 
         redirect_to user_path(@friend) 
        end 
        format.json {render json: @user_party.to_json} 
       end 
      end 


    else 
     flash[:error] = "party required" 
     redirect_to root_path 
    end 
end 

和我user_party.rb是像這樣

def self.request(start_date, start_time, user1, user2) 
transaction do 

    party1 = UserParty.create!(start_date: start_date, start_time: start_time, user: user1, friend: user2, state: 'pending') 

    party2 = UserParty.create!(start_date: start_date, start_time: start_time, user: user2, friend: user1, state: 'requested') 


end 

結束

你會如何正確寫入?在此先感謝

+1

這就是爲什麼在最後使用哈希樣式選項是一個好主意。 – tadman 2014-12-02 17:58:33

回答

1

你必須寫爲

@user_party = UserParty.request({:start_date => params[:start_date], :start_time => params[:start_time]}, current_user, @friend) 

可以傳遞鍵/值對作爲一個逗號分隔的列表

  • ,而沒有其他類型的參數。

  • 雖然還有其他類型的參數,但鍵/值對應該是最後一個參數。

所以:現在

def foo(options = {}) 
    p options 
end 

foo(1=>2, 2=>3) 
# => {1=>2, 2=>3} 

def bar(a,options = {}) 
    p options 
end 

bar(11, 1=>2, 2=>3) 
# => {1=>2, 2=>3} 

,而沒有上述情況持有 -

def bar(options = {},a) 
    p options 
end 
bar(1=>2,3=>4,12) 
# SyntaxError: (irb):12: syntax error, unexpected ')', expecting =>' 

在你原來的方法定義看,調用應該是:

Userparty.request(params[:start_date], params[:start_time]}, current_user, @friend) 
+0

我不爲什麼代碼格式不起作用。請幫忙嗎? – 2014-12-02 17:52:00

+0

@ user3736107我看不到您的方法簽名..請告訴我們。 – 2014-12-02 17:55:14

+0

添加一些文本讓代碼格式化程序穩定下來。 – tadman 2014-12-02 17:57:55

相關問題