我有一个名为verify
的方法。它的工作是在我的表的一行上将布尔值从false更改为true。它接受一个参数(需要布尔值改变的对象),但我收到路由错误。
我的路线是:
get 'verify/:u_business', :action => 'verify', :as => 'verify'
当我运行rake路由时,它看起来就像我需要的那样,但是当我运行网站时出现No route matches
错误。
更新
使用路径的页面中的代码
<table class="table table-striped" style:"width:100%;">
<tr>
<th style="width:20%">Name</th>
<th style="width:40%">Address</th>
<th style="width:30%">Telephone number</th>
<th style="width:10%">Verify</th>
</tr>
<% @unverified.each do |b| %>
<tr>
<td><%= b.name %></td>
<td><%= b.address %></td>
<td><%= b.reward %></td>
<td><%= link_to 'Verify', verify_user_path(b) %></td>
</tr>
<% end %>
</table>
这是验证方法:
def verify(u_business)
if current_user.admin?
u_business.verified = true;
end
端
更多详情:
我有两个型号。 User
模型和Business
模型。每个用户都可以拥有一项业务。我正在处理的这个位允许管理员用户通过将verified?
布尔值设置为true来验证业务。
当我运行rake路线时,我得到了这个:
verify_user GET /users/:id/verify/:u_business(.:format) users#verify
答案 0 :(得分:0)
您也需要传入用户。
verify_user GET /users/:id/verify/:u_business(.:format) users#verify
verify_user(@user, @business)
否则它怎么知道如何生成完整的链接?
答案 1 :(得分:0)
更简单的设置方法(请原谅我的伪码)
在routes.rb
中resources :business do
get 'verify', :on => :member
end
这将添加像/ business / 1 / verify这样的GET路由,并且在没有任何特殊处理的情况下,在verify_business_path创建路由。
然后,你可以做
verify_business_path(business)
在视图中生成网址。
在您的控制器中:
def verify
@business = Business.find params[:id]
if current_user.admin?
@business.verified = true
end
# save, render, etc
end
这将遵循最佳实践,因为您不需要特殊的:u_business参数,只需使用rails-provided:id。在这种情况下,用户是无关紧要的,因此像verify_user这样的路径在这里是不自然的。您只关心登录用户是否为管理员,因此该路由应附加到业务模型,而不是用户。
希望有所帮助!