我是Rails的新手,我正在构建一个用户个人资料可以申请工作的应用程序。我通过关联创建了一个has_many。但我找不到定义控制器和视图的方法。这是我的代码:
型号:
class Profile < ActiveRecord::Base
has_attached_file :profileimg, :default_url => ":style/profile-img.jpg"
validates_attachment_content_type :profileimg, content_type: /\Aimage\/.*\Z/
belongs_to :user
has_many :relationships
has_many :jobs, through: :relationships
end
class Job < ActiveRecord::Base
belongs_to :employer
has_many :relationships, dependent: :destroy
has_many :profiles, through: :relationships
end
class Relationship < ActiveRecord::Base
belongs_to :profile
belongs_to :job
end
PS:我可以在Rails控制台上创建关系,但它可以正常工作。
我该怎么写我的RelationshipsController?如何在我的作业页面上放置一个按钮,current_user.profile可以在该页面上申请该作业?
答案 0 :(得分:0)
控制器只是app/controllers
中的文件。只需在CLI上手动或jobs_controller.rb
添加rails g controller Jobs
即可。
视图进入app/views/jobs/
。最好运行rails g scaffold Example
来获得一整套模型,控制器和放大器。以视图为例或通过教程完成工作。
答案 1 :(得分:0)
您的观点应该显示如下:
Job Apply For This Job
在Job
中创建一个成员路线,如下所示:
resources :jobs do
member do
post 'apply_for_job'
end
end
当有人点击Apply For This Job
按钮时,向上述路线发送AJAX请求。在此之前,我认为Profile
和User
之间应该存在User has_one Profile
和Profile belongs_to User
之间的关系。所以在jobs_controller
创建一个动作:
def apply_for_job
@job = Job.find params[:id] #This should be in a before_filter
@profile = current_user.profile
@profile.relationships.create(job: @job)
respond_to do |format|
format.js
end
end
然后在views
中在jobs
文件夹apply_for_job.js.erb
中创建一个视图,并做出相应的回应,例如将Apply For This Job
设为Successfully Applied
。我没有处理上面的任何错误,所以你可以按照你的要求去做,但这应该让你有一个基本的想法。
希望这有帮助。