我有一个应用程序,用户可以创建调查问题。一切工作正常,如果形式从页面提交,如果你设置了类似下面的网址,我有从非常规页面提交表格
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
的创建操作
能否从您的用户控制器的表演动作添加的代码? – abhir 2013-02-19 00:50:13
@abhir更新了操作 – Leahcim 2013-02-19 00:56:51