我决定在rails 3中启动一个小项目,我有点卡在一个表单上......我在哪里可以指定f.submit动作应该转到一个特殊的控制器/动作?
表格中的代码是:
<%= form_for @user, :url => { :action => "login" } do |f| %>
<div class="field">
<%= f.text_field :email %><br />
<%= f.text_field :password %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
用户在“home_controller”的“index”方法中定义为@user = User.new。
但我有错误:
No route matches {:controller=>"home", :action=>"login"}
对于这个新问题,我感到非常抱歉,但我找不到路由详细信息(几年前我使用rails工作了一段时间但是...)
谢谢, LUC
答案 0 :(得分:2)
您无需为f.sumbit指定任何操作。 首先,你需要确保你把
resources :users
(例如)
你的routes.rb 中的
然后如果你想创建一个用户
把
def new
@user = User.new
end
在您的users_controller中,这样您就有了一个用于创建新用户的页面 或者你可以把@ user = User.new放在任何你喜欢的地方,记得设置 路线正确
然后
def create
@user = User.new(params[:id])
if @user.save
sign_in @user
redirect_to @user
else
render 'new'
end
end
是您点击提交
后执行实际工作的部分将表单与其他所有内容相关联的实际部分是此行
<% form_for @user do |f| %>
您可以将用户更改为其他对象,也可以使用控制器中的更新操作来编辑表单。
希望你有这个想法
答案 1 :(得分:1)
无论何时使用REST对象,只需:
form_for @article
足以让表单找到正确的路径。
否则,您可以这样使用帮助:
form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form")