Ruby on rails 轨道上的两个按钮
我正在尝试让两个按钮在rails中为相同的表单工作。我有一个带有添加用户和注册按钮的登录表单。我的控制器中有两个方法已经处理了这两个不同的请求 但是,我阅读了关于使用附加参数来解析以确定调用了哪个按钮的建议。对于这个解决方案,您不需要使用另一个控制器方法进行间接级别的解析吗?我读到一个控制器调用另一个控制器不是好的MVC实践。在这种情况下,在MVC控制器类中调用另一个方法会是一种糟糕的做法吗 我的表格:Ruby on rails 轨道上的两个按钮,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试让两个按钮在rails中为相同的表单工作。我有一个带有添加用户和注册按钮的登录表单。我的控制器中有两个方法已经处理了这两个不同的请求 但是,我阅读了关于使用附加参数来解析以确定调用了哪个按钮的建议。对于这个解决方案,您不需要使用另一个控制器方法进行间接级别的解析吗?我读到一个控制器调用另一个控制器不是好的MVC实践。在这种情况下,在MVC控制器类中调用另一个方法会是一种糟糕的做法吗 我的表格: <%= form_tag("users/delegate", :method=>
<%= form_tag("users/delegate", :method=>"post") do %>
<%= label_tag(:user, "Username:") %>
<%= text_field_tag(:user) %>
<br/><br/>
<%= label_tag(:password, "Password:") %>
<%= password_field_tag(:password) %>
<br/><br/>
<%= submit_tag "Login", :name=>'login' %>
<%= submit_tag "Add User" %>
<% end %>
你应该这样做:
def delegate
if params[:login]
login_post(params[:user], params[:password])
else
add_post()
end
end
def login_post(user, password)
#do your things
end
您是否要传入两个值:params[:user]和params[:password]。如果传入的参数是值,Ruby如何知道hash:password与params[:password]相对应?
hash
password将由您的实现负责。它仍然是post
。在这里,您只是在控制器中调用一个方法。就是这样。哦,我知道你的更新是怎么回事了。不幸的是,我也有一个规范,它说我无论如何都不能更改login_posts的方法签名来传递params散列而不更改方法参数?类似于它在对该控制器方法的post请求中的工作方式?
def delegate
if params[:login]
login_post(params[:user], params[:password])
else
add_post()
end
end
def login_post(user, password)
#do your things
end