即時通訊對ruby-on-rails很新穎,希望你能幫助我。我正在嘗試使用ruby-on-rails爲Redmine編寫一個插件。而且我在我的控制器中從模型中調用一個新方法時遇到一些問題。所以,我提出Redmine的插件教程事後有這些項目:不能調用控制器中的模型方法
型號:
class Poll < ActiveRecord::Base
def vote(answer)
increment(answer == 'yes' ? :yes : :no)
end
end
控制器:
class PollsController < ApplicationController
def index
@project = Project.find(params[:project_id])
@polls = Poll.all
end
def vote
poll = Poll.find(params[:id])
poll.vote(params[:answer])
if poll.save
flash[:notice] = 'Vote saved.'
end
redirect_to :action => 'index'
end
end
的index.html:
<h2>Polls</h2>
<% @polls.each do |poll| %>
<p>
<%= poll.question %>?
<%= link_to 'Yes', { :action => 'vote', :id => poll[:id], :answer => 'yes' }, :method => :post %> (<%= poll.yes %>)/
<%= link_to 'No', { :action => 'vote', :id => poll[:id], :answer => 'no' }, :method => :post %> (<%= poll.no %>)
</p>
<% end %>
後來我想將Wikicontent添加到相同的HTML只是爲了習慣使用RoR。所以,我現在的項目看起來像這些:
型號:
class Poll < ActiveRecord::Base
def vote(answer)
increment(answer == 'yes' ? :yes : :no)
end
def self.load_content
@wiki_content = Poll.find_by_sql ("select wc.text
, wc.comments
, wc.version
from wiki_contents wc
where wc.page_id = (select min(id)
from wiki_pages
where wiki_id = 3")
end
end
控制器:
class PollsController < ApplicationController
def index
@project = Project.find(params[:project_id])
@polls = Poll.all
@wiki_content = Poll.load_content
end
def vote
poll = Poll.find(params[:id])
poll.vote(params[:answer])
if poll.save
flash[:notice] = 'Vote saved.'
end
redirect_to :action => 'index'
end
end
的index.html:
<h2>Polls</h2>
<% @polls.each do |poll| %>
<p>
<%= poll.question %>?
<%= link_to 'Yes', { :action => 'vote', :id => poll[:id], :answer => 'yes' }, :method => :post %> (<%= poll.yes %>)/
<%= link_to 'No', { :action => 'vote', :id => poll[:id], :answer => 'no' }, :method => :post %> (<%= poll.no %>)
</p>
<% end %>
<% @content.each do |cn| %>
<p>
<%= cn.text %>
</p>
<% end %>
即時得到根據 「內部錯誤」我的瀏覽器。我試圖找到錯誤,似乎我不能從我的模型內控制器調用新方法,我無法弄清楚爲什麼。就像我說的,我對RoR真的很陌生,所以我希望你能幫助我。
這是在日誌文件中的錯誤描述:
ActiveRecord::StatementInvalid (Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7: select wc.text
, wc.comments
, wc.version
from wiki_contents wc
where wc.page_id = (select min(id)
from wiki_pages
where wiki_id = 3):
問候 附庸風雅
您可以發佈您收到的錯誤嗎? – Doon
「內部錯誤 在您嘗試訪問的頁面上發生錯誤 如果您仍然遇到問題,請聯繫您的Redmine管理員以獲得幫助。 如果您是Redmine管理員,請檢查您的日誌文件以獲取有關錯誤的詳細信息。「 – Arty
我的意思是您的錯誤日誌,而不是您的瀏覽器/ Web服務器顯示的通用5xx錯誤。你試圖在nil上調用一些東西) – Doon