我有一个带有这两种方法的用户控制器
def trial_signup
@user = User.new
end
def trial_signup_submit
@user = User.create(params[:user_attributes])
end
我的trial_signup.html.erb(simple_form)位于app / views / users
中这是我表单的一部分
<%= simple_form_for(resource, :as => resource_name, :url => users_trial_signup_submit_path(resource_name)) do |f| %>
在我的路线中我添加了这些
get 'users/trial_signup', to: 'users#trial_signup'
post 'users/trial_signup_submit', to: 'users#trial_signup_submit'
我的表单已正确呈现,但未正确发布。我希望它发布到我刚刚创建的动作中。
我已经安装好了。我有另一个注册工作流程来注册用户,但这是一个试验注册,所以我需要找到另一种方式。
为什么表单无法找到我的用户模型资源?
答案 0 :(得分:2)
<%= simple_form_for(@user, :url => users_trial_signup_submit_path(@user)) do |f| %>
您尝试在设计控制器之外渲染设计表单,因此您没有初始化resource
或resource_name
变量。
也可能需要更改控制器中的参数:
def trial_signup_submit
@user = User.create(params[:user])
end
虽然我建议做类似的事情:
def trial_signup_submit
@user = User.new(params[:user])
if @user.save
redirect_to <wherever you want>, notice: <your message>
else
render :trial_signup
end
end
PS:如果您需要与默认设置new_trial
和create_trial
不同的内容,我认为您应该将您的操作更改为new
和create
。