我对Rails很新。如果问题看起来很愚蠢,请原谅我。我正在创建一个应用程序,用户可以上传故事供其他人阅读。登录后,他们也可以创建自己的个人资料。现在,用户提交故事,在故事索引页面中,我尝试列出故事标题以及提交者的名称。我正在尝试将提交者的名称作为链接显示提交者的个人资料显示页面。然而,这似乎不起作用。我尝试了各种各样的东西,但它没有给我解决方案。 这是我的用户模型
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
</exclusions>
这是我的个人资料模型
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:authentication_keys => [:login]
has_many :stories
has_one :profile, dependent: :destroy
attr_accessor :login
validate :validate_username
这是我的个人资料控制器
belongs_to :user
这是我的故事索引页面,我尝试用提交它的用户名字列出故事
before_action :authenticate_user!
#before_action :find_profile, only: [:show, :edit, :update, :destroy]
def index
@profiles = Profile.all
end
def new
@profile = Profile.new
end
def create
@profile = Profile.new(profile_params)
@profile.user_id = current_user.id if current_user
if @profile.save
flash[:success] = "Profile saved"
redirect_to root_path
else
flash[:error] = "Error"
render :new
end
end
def show
@profile = Profile.find(params[:id])
end
def update
@profile = Profile.find(params[:id])
if @profile.update_attributes(profile_params)
flash[:success] = "Successfully updated" # Optional
redirect_to profile_path
else
flash[:error] = "Error" # Optional
render :edit
end
end
def edit
@profile = Profile.find(params[:id])
end
def destroy
@profile = Profile.find(params[:id])
@profile.destroy
redirect_to root_path
end
private
def profile_params
params.require(:profile).permit
( :first_name, :last_name, :date_of_birth, :occupation,
:hobbies, :about_me)
end
点击&#34; story.user.username&#34;应该引导我到用户的个人资料显示页面。但是它会抛出以下错误
ActionStroller :: UrlGenerationError in Stories #index 显示/home/mahesh/storyteller/app/views/stories/index.html.erb第5行提出:
没有路由匹配{:action =&gt;&#34; show&#34;,:controller =&gt;&#34; profiles&#34;,:id =&gt; nil}缺少必需的键:[:id]
请帮忙。如果我必须发布更多信息,也请告诉我
答案 0 :(得分:2)
此处 @profile传递为nil ,请检查个人资料对象,或者您正在尝试检查故事用户个人资料,然后传递story.user
profile_path(story.user)
答案 1 :(得分:0)
由于您不熟悉动态网站开发,因此您可以通过任何体验获得最多的想法。我决定以最小的风格构建你的应用程序的基本功能,以保持rails的DRY实践。它是available for you to clone。
程序开发人员很难为您提供明确的答案,提供您提供的信息,以及我在您的应用程序上面看到的语法也可能存在问题。
在应用程序函数及其属性的描述中使用编程术语也是一种好习惯。 ^ R是一种复杂的OOP语言,其中R $是一个MVC架构框架,如果你无法使用PT正确描述它,那么开发人员很难帮助你。成功成为一名优秀而狂热的职业开发者需要很多失败。 (持久性)是关键值=“勤奋”。
我在Story-application中为我提供了一些优秀的RoR在线资源,供您学习。请按照自述说明进行操作。快乐的编码!