我在RoR中完成一项简单的任务时遇到了麻烦。我只是希望用户填写表单并单击“下一步”而不将其写入数据库,而不是从表单写入数据库,在下一页上,我将让用户单击“提交”,它将写入DB。
有人可以帮我理解HTTP动词GET,POST等,以及如何将其集成到我的Controller中?我不确定是否需要更改form_for
标记中的代码。
我有这样的事情:
<%= form_for(@trek) do |t| %>
.
.
<%= t.submit "Create Trek" %>
</div>
<% end %>
谢谢你们......对于这个试图学习RoR的人来说,所有的帮助都很感激:/
编辑...下面是'创建','新'和'审核'的控制器操作。我希望“审核”操作成为他们可以审核然后提交数据的地方。
def new
@trek = Trek.new
@title = "Share Adventures with Friends"
end
def create
@trek = Trek.new(params[:trek])
if @trek.save
flash[:success] = "Congrats!"
render 'review'
else
@title = "Share Adventures with Friends"
render 'new'
end
end
def review
@trek = Trek.find(params[:id])
end
答案 0 :(得分:1)
在review
中,你试图从数据库中提取一些你不想在数据库中存在的东西(因为你还没有保存它,它不在数据库中) 。您可能想要的是:
def review
@trek = Trek.new(params[:trek])
end
如果您希望该表单提交到form_for
而不是review
,则还需要修改create
。
你做的是这样的:
<%= form_for @trek, :url => { :action => :review } do |t| %>
.
.
<%= t.submit "Create Trek" %>
</div>
<% end %>