2015-09-09 87 views
0

我正在創建RoR應用程序。從視圖發送參數到控制器有問題。其中一個參數未正確發送到控制器中

我的觀點:

<%= form_for(:message, url: create_message_path) do |f| %> 
    <%= f.text_area :content, placeholder: 'Write new post' %> 
    <%= hidden_field_tag :user2_id, @user %> 
    <%= f.submit 'Send', class: 'btn btn-primary' %> 
<% end %> 

點擊按鈕後,控制器被調用,創造,我要創建新的消息操作。消息模型字段爲:user1_id,user2_id,內容。

def create 
    @message = Message.new(user1_id: current_user.id, user2_id: params[:user2_id], content: params[:content]) 
    if @message.save 
     CORRECT 
    else 
     INCORRECT 
    end 
    end 

問題在於params [:content]。看起來這個參數在創建新消息時爲零。當我更改這樣的代碼時,它的工作原理如下:

@message = Message.new(user1_id: current_user.id, user2_id: params[:user2_id], content: 'hello') 

你有一些建議,爲什麼會發生這種情況?

回答

0

如果你看看那些在日誌中產生的paramscontent將在message之內,因此您需要更改

@message = Message.new(user1_id: current_user.id, user2_id: params[:user2_id], content: params[:content]) 

@message = Message.new(user1_id: current_user.id, user2_id: params[:user2_id], content: params[:message][:content]) 
+1

謝謝。它的工作:) – simon77

+0

@ simon77請標記我的答案爲接受:) – Pavan

+0

我會的,但有一些時間限制,所以我必須等待:) – simon77

0

相反的hidden_field_tag你應該使用hidden_field幫手:

<%= f.hidden_field :user2_id, @user %> 

而且,在你的控制器,你應該有:

def create 
    @message = Message.new(message_params.merge({user1_id: current_user.id}) 
    # ... 
end 
# ... 
private 

def message_params 
    params.require(:message).permit(:user2_id, :content) 
end 
相關問題