我的一个视图中有一个表单,如下所示:
<% form_for @user, url_for(:controller => :users, :action => :admin_edit, :id => @user.id) do |f| %>
<%= f.select 'Confirmed', [['Yes', true], ['No', false]] %>
<%= f.submit 'Update' %>
<% end %>
第一行是提出TypeError: no implicit conversion of Symbol into Integer
。我认为这是因为路线(下方)需要一个ID,但却找不到所需的ID。
users#admin_edit
方法目前是空的定义。指向它的路线是:
post 'admin/users/:id/edit', to: 'users#admin_edit'
使用
设置有问题的@user
对象
@user = User.find(params[:id])
所以:id
属性是明确设置的;我已经通过控制台验证了这一点。
鉴于我已将ID明确传递给url_for
,为什么路由不会扩展@user
对象以获取其ID?或者它可以,问题完全在其他地方吗?
答案 0 :(得分:1)
试试这个:
javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();
javax.ws.rs.client.WebTarget target = client.target("someUrl");
List<Student> students =
target.request().get(new javax.ws.rs.core.GenericType<List<Student>>() {});
<小时/> 如果您将路线设置为:
<%= form_for @user, url: {:action => :admin_edit} do |f| %>
<%= f.select 'Confirmed', [['Yes', true], ['No', false]] %>
<%= f.submit 'Update' %>
<% end %>
然后你的表格如下:
post 'admin/users/:id/edit', to: 'users#admin_edit'
然后,您可以将<%= form_for @user, url: {:controller => ::users, :action => :admin_edit, :id => @user.id}, method: :post do |f| %>
<%= f.select 'Confirmed', [['Yes', true], ['No', false]] %>
<%= f.submit 'Update' %>
<% end %>
中的id
看作如下:
UsersController