Namesapce嵌套表单问题

时间:2017-04-16 18:05:38

标签: ruby-on-rails ruby forms

我是Ruby on rails的新手,我正在搞乱表单。

让我们从我正在开展的项目的背景开始。长话短说(dumbed-down version),这是一个问答网站,用户猜测答案,系统检查用户的提交是否正确,显示相应的消息,将他们的积分添加到记分板,以及将尝试存储到数据库表。

我在提问页面上显示了提交表单。

我知道这是一个简单的问题,但我希望有人可以解释为什么,或者它是如何发生的,这样我才能学习。我相信我误解了嵌套的命名空间组如何使用不同的模型并正确调用它们。

我有以下错误:

命名空间:成员

路线

namespace :member do
  resources :challenges do
    resources :submissions
  end
end

模型

提交

class Member::Submission < ActiveRecord::Base
  belongs_to :challenges
end

挑战

class Member::Challenge < ActiveRecord::Base
  belongs_to :category
  belongs_to :group
  belongs_to :point
  has_many :submissions

提交表格

<%= form_for([@member_challenge, @member_challenge.submissions.build]) do |f| %>
  <%= f.label :content %><br>
  <%= f.text_area :content %>

  <%= f.submit %>
<% end %>

提交控制器

before_action :find_challenge 
def create
  @member_submission = @challenge.submissions.create(params[:submission].permit(:content))
  @member_submission.save  
end

....

private

def find_challenge
  @challenge = Member::Challenge.find(params[:challenge_id])
end

收到错误

NoMethodError in Member::Challenges#show

Showing /home/ubuntu/workspace/Cyberlympix/app/views/member/submissions/_form.html.erb where line #1 raised:

undefined method `member_challenge_member_submissions_path' for #<#<Class:0x00000004131b28>:0x0000000432a218>
Did you mean?  member_challenge_submissions_path
               member_challenge_submission_path

我知道它与表格有关,我称之为@member_challenge,但不确定我做错了什么?

任何帮助都非常感激。

0 个答案:

没有答案