#13 楼 @greenmoon55 我试了一下,用 update_all 不能将 id 去出来,只能一个一个的来取 id,如下面所示:
UserCourse.all.each do |user_course|
if !user_course.grade
user_course.update_attribute(:grade, params[user_course.id])
end
end
但是这样有一个问题,params[user_course.id] 不能够取出值并赋给 grade,不知道是怎么回事?
#5 楼 @karmue 我按照你的思路做了 这是 create 的函数
def create
data = Array.new
params.keys().each do |key|
if key.is_a?(Integer)
else
data[] = key
end
end
user_courses = UserCourse.find(data)
user_courses.each do |user_course|
user_course.grade = params[user_course.id]
user_course.save
end
redirect_to :action => "index", :controller => "select"
end
而 html 页面中,提取代码为 textarea id="comment" name="<%= user_course.id %>" value=<%= user_course.grade %>>"✓", "authenticity_token"=>"/9RSuxSpGdWxu2/PnCsxoK8CxtzUaXQWnIA/D5CsDbY=", "1"=>"85", "11"=>"58", "commit"=>"submit"}
#6 楼 @karmue mue 我是这样写的 <% @user_courses.each do |user_course| %>
<%= user_course.course_name %> <%= user_course.user_name %> <% if user_course.grade %> <%= user_course.grade %> <% else %> > <% end %> <% end %> 浏览器把 user_course.id 当成了一个字符串变量,能不能把这句代码写完整啊,我还是不太明白。怎样取出的数字赋值给 key。我是用的 params[] hash,错误提示 Couldn't find all UserCourses with IDs (utf8, authenticity_token, user_course.id, commit, controller, action) (found 0 results, but was looking for 6). 另外,还有个问题,我的复制上贴吧的代码为什么这么不好看,有什么地方可以设置吗?估计楼主是要模型 A 实现增查改删功能,而 B 控制器用于改变 A 中的某些属性,如果要简单的话,模型 A 直接用 scoffold,控制器 B 改一改就好了
#11 楼 @karmue 那个也不行,按理来说应该可以的,我的 select 控制器中的 new 方法 def new @course = Course.find(params[:id]) @student_course = StudentCourse.new @student_course.course_id = @course.id @student_course.student_id = current_user.id if @student_course.save redirect_to :action => "index", :controller => "courses" else redirect_to :action => "index", :controller => "select" end end 如果采用<%= link_to '选择', '/select/new?id=#{@course.id}' %>,在当前页面可以显示,但是点击选择之后,会提示:Couldn't find Course with id= ,网页错误。 采用第二种形式连此网页都不能显示,提示有错误: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
#8 楼 @ZombieCoder 手动把 course_id 当成参数传过去,这句话我不是很懂,能解释一下吗。是用 debugger 来做吗,鼠标停在连接的地方,我一般是用的浏览器来查看具体生成的 html 代码,看 guides 里面的 form 参数也是用 params[:XXX]来查看的,好像也没有错。
#6 楼 @mingyuan0715 你好,前两天有点事情去了,现在发我的路由 Pictures::Application.routes.draw do get "select/grade" get "select/destroy" get "select/index" get "select/new" get "select/show"
resources :notices
resources :labs
get "new_experiment/index" get "new_experiment/show"
resources :majors resources :colleges mount Ckeditor::Engine => '/ckeditor'
resources :sessions, only: [:new, :create, :destroy]
resources :news resources :users resources :courses
get "login/index" get "login/login" get "login/news" get "login/show" get "login/download" get "login/download1" get "login/center_introduce" get "login/center_special" get "login/center_teachers" get "login/courses_index" get "login/courses_query"
get "login/student"
match '/signup', to: 'users#new' match '/signin', to: 'sessions#new' match '/signout', to: 'sessions#destroy', via: :delete
root :to => 'login#index'
match ':controller(/:action(/:id))(.:format)' end
#2 楼 @blacktulip new 方法是我自己随意定的,可以改一改名字,但是还是会报错
#1 楼 @mingyuan0715 我不是用的 resourse 路由,而是用的 get 方法,方法可以随意定,此控制器没有绑定 resourses
其实我是想做一个关系数据库,建立了三个表,student,student_course,course,其中我想对 student_course 进行操作,使 student 和 course 联系起来,因此必须使用两者的 id,通过查询课程,我想讲 course_id 取下来,放入 student_course 的 course_id 中,代码可能有点乱,但大概思路就是这样。