我想知道是否有人可以为我阐明这一点:
我有一个用户索引页面加载正常。
def index
@users = User.paginate(page: params[:page])
end
视图中的
<tbody>
<% @users.each do |user| %>
<tr>
<td>
<input type="checkbox" class="checkthis" />
</td>
<td id="hidden">
<%= user.id %>
</td>
<td class="ellipsis">
<%= link_to user.name, edit_user_path(user) %>
</td>
<td id="hidden">
<%= user.projects.count %>
</td>
<td>
<%= user.admin? %>
</td>
...clipped for brevity
用户名再次链接到编辑用户页面,这一切都很好......
我想要做的是在索引页面上的模态中使用编辑用户功能,而不是在单独的编辑页面上。我可以在索引页面上打开一个模态没问题,js工作正常。
问题是,当我将form_for @user(已经在我的编辑页面上工作)加载到模态中时,我收到错误
Couldn't find User with 'id'=
它引用了我在用户控制器中的第二行,我从编辑页面添加了索引。
def index
@users = User.paginate(page: params[:page])
@user = User.find(params[:id])
end
我的猜测是,这是因为索引页面没有选择用户加载,即@user变量没有id引用...这个假设是否正确?
我的表格部分在
之下<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: @user %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit yield(:button_text), class: "btn btn-success btn-lg" %>
<% end %>
如果是这样,我如何才能加载我的模态,以便它可以链接到用户索引,就像当前页面的工作方式一样,而不会出现ID问题。
显然,如果我误读了这个,还有另一个原因......我全是耳朵
谢谢
答案 0 :(得分:2)
是的,你失踪的参数[:id]是你的问题。
要解决这个问题,你可以找到&#34;像这样的用户
@user = User.where(:id => params[:id]).first||User.new
或更好,如@iceman所述:
@user = User.where(:id => params[:id]).first_or_initialize
@user
将是&#34; new&#34;如果没有给出身份证明
答案 1 :(得分:0)
找不到'id'=
的用户
这意味着params[:id]
是nil
id
对params
操作更改索引操作
index
未获得def index
@users = User.paginate(page: params[:page])
end
exports.helloHttp = function helloHttp (req, res) {
res.send(`Hello ${req.body.name || 'World'}!`);
};
答案 2 :(得分:0)
问题是你没有在params中发送用户ID,所以它找不到任何用户。如果要在索引上使用@user
和:id
,则必须将/users
param发送到索引视图。
默认索引路径看起来像
/users/:id/edit
,默认编辑路径类似于
find
当find_by
方法无法找到给定对象时,它也会出现错误。要收到nill而不是找不到错误,您可以使用where().first
或<p class="demo1">
some examples some examples <a href="https://jsfiddle.net/">anchor1</a> some examples some examples <a href="">anchor1</a>some examples some examples some examples some examples <a href="">anchor1</a>some examples some examples
</p>
<div id="demo2">hi</div>
$('.demo2 a').hover(function (event) {
link = $(event.target);
//to find the nearest link and store in the link variable
$("#demo2").text(link);
});
答案 3 :(得分:0)
params [:id]。
你是否在模态中使用js获取了编辑页面html?如果是,那么
在控制器中添加以下代码:
def index
@user = User.where(:id => params[:id]).first || User.new
end