Rails路由不能扩展模型对象以获取ID

时间:2016-03-31 20:14:00

标签: ruby-on-rails rails-activerecord

我的一个视图中有一个表单,如下所示:

<% 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?或者它可以,问题完全在其他地方吗?

1 个答案:

答案 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