簡體   English   中英

Rails路線參數查找表格

[英]rails routes params find for a form

我的rails應用程序遇到了一些麻煩。 簡而言之,它是一個社交網絡應用程序,用戶可以在其中擁有個人資料,提交內容並可以對提交內容發表評論。

我的路線如下:

map.connect '/:username', :controller => 'users', :action => 'show'  
map.connect '/:username/:id', :controller => 'submissions', :action => 'show'

因此,當他們查看提交內容時,URL類似於:

http://www.example.com/users_username/2342

該數字是類別的ID號。 到現在為止還挺好。 我遇到麻煩的地方是我嘗試對提交的內容發表評論。 在每個提交頁面上都有一個用於提交評論的表單,如下所示:

<% form_for Comment.new do |f| %>  
    <%= f.text_area :message %>  
    <%= f.submit "Submit", :disable_with => 'Submitting...' %>  
<% end %>  

控制器看起來像這樣:

def create
    submission = Submission.find(params[:id])
    comment = cat.comments.create(params[:comment])
    comment.created_at = Time.now
    comment.save
    redirect_to submission
end

現在,每次我嘗試提交評論時,Rails都會返回:

ActiveRecord::RecordNotFound in CommentsController#create Couldn't find Submission without an ID or undefined method `answers' for nil:NilClass  

基本上,rails不會使用params從URL中提取:id,我也不知道為什么。 提交頁面針對URL中的每個ID正確顯示,所以我不明白為什么它不為此表單提取它。 如果我明確命名ID(IE Submission.find(2345)),它就可以完美運行...所以我缺少了什么? 我只是愚蠢嗎?

我的人際關系也正確建立。

提前致謝。

以下代碼段生成一個表單,該表單提交給comments控制器:

<% form_for Comment.new do |f| %> 

我相信您必須在表單內傳遞提交ID,然后再傳遞:

<%=hidden_field_tag(:submission_id, @submission.id)%>

在注釋控制器中,您必須掌握該ID:

def create
    submission = Submission.find(params[:submission_id])
    comment = submission.comments.create(params[:comment])
    comment.created_at = Time.now
    comment.save
    redirect_to submission
end

那應該可以解決,但是我建議做嵌套資源作為第二步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM