2013-02-19 69 views
1

我有一个应用程序,用户可以创建调查问题。一切工作正常,如果形式从页面提交,如果你设置了类似下面的网址,我有从非常规页面提交表格

resources :surveys 

这是在服务器上发生了什么,当我提交表单的创建你所期望行动。

Started POST "/surveys" for 127.0.0.1 at 2013-02-18 16:32:39 -0800 
Processing by SurveysController#create as HTML 

然而,在用户控制器的表演动作,我也包含了你所期望的测量控制器的“新”行动找到的代码。这样做是为了让用户可以从他们自己的档案中创建调查问题。然而,当提交表单时,它现在提交的“GET”请求,并在用户控制器中的show行为被处理,所以很明显该调查没有得到创建

Started GET "/twitterusers/1? whole bunch of data-passed-in-the-url-bar-via-GET-ommitted 
Processing by TwitterusersController#show as HTML 

这是什么形式的外观喜欢(我没有包含部分)。

<%= form_for @survey do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :name, "Name your Quiz" %><br /> 
    <%= f.text_field :name %> 
    <%#= @survey.questions %> 
    </p> 

    <%= f.fields_for :questions do |builder| %> 
     <%= render "question_fields", :f => builder %> 
    <% end %> 
    <p><%= link_to_add_fields "Add Question", f, :questions %></p> 
    <p><%= f.submit %></p> 
<% end %> 

我不知道是否有变化,我可以对形式来完成我想要做的事。如果这不是可取的(违背Rails约定),请解释你在我的情况下会做什么。

更新 - 来自用户控制器的show action的代码。调查has_many问题(accepted_nested_attributes_for),问题与答案相同。它创建了两套题形式(每四个字段答案)

def show 
     @twitteruser = Twitteruser.find(params[:id]) 
     2.times do 
     questions = @survey.questions.build 
     4.times { questions.answers.build } 
     end 
    end 

这是调查控制器(它不是服从,如果我从show动作提交)

def create 
    @survey = current_user.surveys.build(params[:survey]) 

    if @survey.save 
     redirect_to twitteruser_path(current_user), :notice => "Successfully created" 
     # redirect_to @survey, :notice => "Successfully created survey." 
    else 
     render :action => 'new' 
    end 
end 
的创建操作
+0

能否从您的用户控制器的表演动作添加的代码? – abhir 2013-02-19 00:50:13

+0

@abhir更新了操作 – Leahcim 2013-02-19 00:56:51

回答

1

请尝试以下之一:

1)在你看来,改变@surveySurvey.new

2)在你Users#show行动,加入@survey = Survey.new

+0

如果我在视图中将@survey更改为Survey.new,则它不会创建do ... end在控制器中执行的任何问题或答案字段。但是,在控制器中添加Survey.new也不能解决问题。 – Leahcim 2013-02-19 01:10:02

+0

您是否在'do'循环中添加了'@survey = Survey.new'?你能否告诉我,在提交时,调查控制员现在是否正在处理它? – abhir 2013-02-19 01:15:51

+0

我不把它放在do循环中。实际上,它是在调查控制器(工作)的新动作中的相同方式。当我现在提交时,我得到一个“Request-URI太大”的错误 - 太多的数据在uri栏中传递。一定还有其他的错误。 – Leahcim 2013-02-19 01:19:45